一段ADO连接数据失败的例子,(主要是没连上SQL),能否帮忙指出原因?

flyhigher402 2007-06-27 10:46:28
try
{
_ConnectionPtr m_pConnection;
hr = m_pConnection.CreateInstance(__uuidof(Connection)); //创建Connection对象
if(SUCCEEDED(hr))
{
m_pConnection->Open("Provider=SQLOLEDB;Data Source=127.0.0.1;Initial Catalog=voice;UserID=sa;Password=;","","",adModeUnknown);
} // "Provider=SQLOLEDB,Data Source=serverName;Initial Catalog=databaseName;User ID=userName;Password=userPassword;"
}
catch(_com_error e)
{
CString errormessage;
errormessage.Format("连接数据库失败!\r\n错误信息:%s", e.ErrorMessage());
AfxMessageBox(errormessage); //显示错误信息
}

然后,运行时,显示“连接数据失败!IDispatch error ”。
另外说明一下,我的数据库系统用户sa是没有密码的,故密码为空。
大家帮我找找,错误可能是在哪?
...全文
308 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
hrk001 2007-06-28
  • 打赏
  • 举报
回复
你需要把它定义在数据库连接类的头文件中,如我为数据库建立的连接类为:ADOConn,那么它就定义在ADOConn.h中,而且,不知道你在使用ado连接数据库的时候是否导入了ADO库文件,即你是否进行了如下操作:
给ADOConn.h中添加了#import "C:\Program Files\Common Files\System\ado\msado15.dll" no_namespace rename("EOF","adoEOD") rename("BOF","adoBOF")
如果没有,请先添加,然后在类头文件中定义m_pConnection,格式为:
public:
_ConnectionPtr m_pConnection;
_RecordsetPtr m_pRecordset;
以上两个最好都定义,一个负责连接数据库,一个负责返回结果集,如果还有问题,请继续留言
hrk001 2007-06-27
  • 打赏
  • 举报
回复
我前几天也是遇到过这个问题,不过后来好了:
是连接数据库的初始化函数吧,把这句m_pConnection->Open("Provider=SQLOLEDB;Data Source=127.0.0.1;Initial Catalog=voice;UserID=sa;Password=;","","",adModeUnknown);改成:_bstr_t strConnect="Provider=SQLOLEDB.1;Password=123【123是我的密码,你可以根据你的密码自己设置,要是没有就留空】;Persist Security Info =True;User ID=sa;Initial Catalog=【你的数据库名字】;Data Source=localhost;";
m_pConnection->Open(strConnect,"","",adModeUnknown);
要是还不能解决问题,请完全参照我的代码:
::CoInitialize(NULL);
try
{
m_pConnection.CreateInstance("ADODB.Connection");

_bstr_t strConnect="Provider=SQLOLEDB.1;Password=123;Persist Security Info =True;User ID=sa;Initial Catalog=课程设计;Data Source=localhost;";
m_pConnection->Open(strConnect,"","",adModeUnknown);
}
catch(_com_error e)
{
//AfxMessageBox(e.Description());
AfxMessageBox("connection exception");
}


flyhigher402 2007-06-27
  • 打赏
  • 举报
回复
没想到是这么个小细节。呵呵。
flyhigher402 2007-06-27
  • 打赏
  • 举报
回复
TO ouyh12345(五岭散人) :

十分感谢。去掉那个可以了,不再出错了!十分感谢。
flyhigher402 2007-06-27
  • 打赏
  • 举报
回复
问题依旧。

还是谢谢你了。我再尝试其他办法吧。
ouyh12345 2007-06-27
  • 打赏
  • 举报
回复
Password=;

最后那个分号不要
flyhigher402 2007-06-27
  • 打赏
  • 举报
回复
哦。忘了跟你们说了,voice是SQL Server组->(local)Windows NT->数据库 下的"voice"数据库,里面我建了一个UserInfo的表,包含两个字段(userid,password)。
ouyh12345 2007-06-27
  • 打赏
  • 举报
回复
Initial Catalog=voice;
看看有没有voice这个库
flyhigher402 2007-06-27
  • 打赏
  • 举报
回复
to hrk001(一剑晴):

另外想问下,你的m_pConnection是在哪声明了?我在try块里声明,当我在其他地主要用到这个m_pConnection的时候,就出错了,说是undeclared identifier。
谢谢!
flyhigher402 2007-06-27
  • 打赏
  • 举报
回复
to hrk001(一剑晴):
谢谢!

4,012

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 数据库
社区管理员
  • 数据库
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧