下面是我写的一个vc用ado链接mssql的类,
在其他类中调用这个类的函数来实现与数据库的内容交互
开始运行很好的
可是不知道为什么用个几个小时候后
我的log文件显示:
[DBNETLIB][ConnectionOpen (Connect()).]SQL Server 不存在或拒绝访问。
2007-5-26 23:37:58 > > 错误:
-2147467259(80004005)
//==========================
下面是代码,
希望热心的前辈指点一二
谢谢!
///////////////////////////////////////////
BOOL CConnSQL::ConnSQL()
{
BOOL bSuc=FALSE;
try
{
OleInitialize(NULL);
hr = m_pConnection.CreateInstance( "ADODB.Connection ");///创建Connection对象
if(SUCCEEDED(hr))
{
TRACE( "adodb.connection Create instance suc!\n ");
CString sDS;
sDS.Format( "Provider=SQLOLEDB.1;Password=%s;Persist Security Info=True;User ID=%s;Initial Catalog=DbBaike;Data Source=%s ", sqlPsw,sqlUser,sqlSvrIp);
hr = m_pConnection-> Open((_bstr_t)sDS,L " ",L " ",adOpenUnspecified);
bSuc=TRUE;
}
}
catch (_com_error &e) {
GenerateError( " ",e.Error(),e.Description());
bSuc=FALSE;
}
return bSuc;
}
BOOL CConnSQL::DisConnSQL()
{
m_pConnection-> Close();
::CoUninitialize();
//log_file( "CConnSQL::DisConnSQL() ");
return TRUE;
}
BOOL CConnSQL::ExecSQL(CString sql)
{
BOOL bSuc=TRUE;
bstr_t str=(bstr_t)sql;
try
{
ConnSQL();
_RecordsetPtr m_pRecordset = m_pConnection-> Execute(str,&RecordsAffected,adCmdText);
}
catch(_com_error &e)
{
bSuc=FALSE;
DisConnSQL();
GenerateError(sql,e.Error(),e.Description());
return bSuc;
}
DisConnSQL();
return bSuc;
}
void CConnSQL::GenerateError(CString sql, HRESULT hr, PWSTR pwszDescription)
{
CString strError;
strError.Format( "错误:%s\r\n%d(%x) ",sql,hr,hr);
strError += "\n\n ";
strError +=pwszDescription;
log_file( "> > %s ",strError);
// AfxMessageBox(strError);
}
------解决方案--------------------
与代码无关的,应该是服务器问题或权限问题。