ADO连接数据库老出错.

时间:2023-01-12 17:27:48
ADO+MS Sql 2000 建立连接的例题:

代码如下:
_ConnectionPtr m_connection.CreateInstance("ADODB.Connection"); /*创建连接对象*/
_RecordsetPtr m_set.CreateInstance("ADODB.Recordset");         /*创建记录集对象*/
_CommandPtr m_cmd.CreateInstance("ADODB.Command");  /*创建一个命令对象*/

/*连接数据库*/
m_connection->Open(L"Provider=SQLOLEDB,Data Source=YAN;Initial Catalog=pubs;User ID=sa;Password=123;",L"",L"",adOpenUnspecified);   /*走到这里就出错.*/

打印出错误:-2146824582(800a0e7a)  未找到提供程序,该程序未能正确安装.

搞不懂了,我用MS SQL查询分析器是能用的,说明数据库正常啊,怎么就是连不上啊.

谁知道是那出问题了吗?

9 个解决方案

#1


用#import引入ADO库文件 

#import "c:\program files\common files\system\ado\msado15.dll"no_namespaces rename("EOF" adoEOF") 

这行语句声明在工程中使用ADO,但不使用ADO的名字空间,并且为了避免常数冲突,将常数EOF改名为adoEOF。现在不需添加另外的头文件,就可以使用ADO接口了。 

2、初始化OLE/COM库环境 
必须注意的是,ADO库是一组COM动态库,这意味应用程序在调用ADO前,必须初始化OLE/COM库环境。在MFC应用程序里,一个比较好的方法是在应用程序主类的InitInstance成员函数里初始化OLE/COM库环境。 

BOOL CMyAdoTestApp::InitInstance() 

if(!AfxOleInit())//这就是初始化COM库 

AfxMessageBox(“OLE初始化出错!”); 
return FALSE; 


#2


参考
http://pcedu.pconline.com.cn/empolder/gj/vc/0507/653859.html

//ADO编程,别忘了try{}catch(){}

#3


看过楼上推荐的文章,按那个连接字符串来写还是一样出错.
CString strSRC;
strSRC="Driver=SQL Server;Server=";
strSRC+="suppersoft";
strSRC+=";Database=";
strSRC+="master";
strSRC+=";UID=SA;PWD=123";
m_connection->Open(_bstr_t(strSRC),L"",L"",adOpenUnspecified);
这次出错是提示,-2147467259(80004005)
             [Microsoft][ODBC SQL Server Driver][DBNETLIB]Sql Server 不存在或访问被拒绝.

但是我使用查询分析器用帐号:sa  密码123 是可以连接上的,
请谁给段正确的连接字符串代码.
我的环境是:vs7.0+ADO+MS Sql2000

#4


该回复于2009-03-18 09:57:53被版主删除

#5


m_pConnection->Open("driver={SQL Server};Server=127.0.0.1;DATABASE=vckbase;UID=sa;PWD=139","","",adModeUnknown);
其中Server是SQL服务器的名称,DATABASE是库的名称
应该是你那服务器名称错了吧

#6


看错了!!

#7


{SQL Server}这样试下

#8


m_connection->Open(L"Provider=SQLOLEDB;Data Source=YAN;  //或者这里换成ip,本地可以用(local)
  Initial Catalog=pubs;UID=sa;PWD=123;", L"", L"", adModeUnknown);  /*走到这里就出错.*/ 

#9


改成这样成功:
         CString strSRC;
strSRC="Driver=SQL Server;Server=";
strSRC+="127.0.0.1";                 /*连接成功MS SQL2000*/
strSRC+=";Database=";
strSRC+="master";
strSRC+=";UID=SA;PWD=123";

#1


用#import引入ADO库文件 

#import "c:\program files\common files\system\ado\msado15.dll"no_namespaces rename("EOF" adoEOF") 

这行语句声明在工程中使用ADO,但不使用ADO的名字空间,并且为了避免常数冲突,将常数EOF改名为adoEOF。现在不需添加另外的头文件,就可以使用ADO接口了。 

2、初始化OLE/COM库环境 
必须注意的是,ADO库是一组COM动态库,这意味应用程序在调用ADO前,必须初始化OLE/COM库环境。在MFC应用程序里,一个比较好的方法是在应用程序主类的InitInstance成员函数里初始化OLE/COM库环境。 

BOOL CMyAdoTestApp::InitInstance() 

if(!AfxOleInit())//这就是初始化COM库 

AfxMessageBox(“OLE初始化出错!”); 
return FALSE; 


#2


参考
http://pcedu.pconline.com.cn/empolder/gj/vc/0507/653859.html

//ADO编程,别忘了try{}catch(){}

#3


看过楼上推荐的文章,按那个连接字符串来写还是一样出错.
CString strSRC;
strSRC="Driver=SQL Server;Server=";
strSRC+="suppersoft";
strSRC+=";Database=";
strSRC+="master";
strSRC+=";UID=SA;PWD=123";
m_connection->Open(_bstr_t(strSRC),L"",L"",adOpenUnspecified);
这次出错是提示,-2147467259(80004005)
             [Microsoft][ODBC SQL Server Driver][DBNETLIB]Sql Server 不存在或访问被拒绝.

但是我使用查询分析器用帐号:sa  密码123 是可以连接上的,
请谁给段正确的连接字符串代码.
我的环境是:vs7.0+ADO+MS Sql2000

#4


该回复于2009-03-18 09:57:53被版主删除

#5


m_pConnection->Open("driver={SQL Server};Server=127.0.0.1;DATABASE=vckbase;UID=sa;PWD=139","","",adModeUnknown);
其中Server是SQL服务器的名称,DATABASE是库的名称
应该是你那服务器名称错了吧

#6


看错了!!

#7


{SQL Server}这样试下

#8


m_connection->Open(L"Provider=SQLOLEDB;Data Source=YAN;  //或者这里换成ip,本地可以用(local)
  Initial Catalog=pubs;UID=sa;PWD=123;", L"", L"", adModeUnknown);  /*走到这里就出错.*/ 

#9


改成这样成功:
         CString strSRC;
strSRC="Driver=SQL Server;Server=";
strSRC+="127.0.0.1";                 /*连接成功MS SQL2000*/
strSRC+=";Database=";
strSRC+="master";
strSRC+=";UID=SA;PWD=123";