MFC利用ADO连接连接SQL SERVER 2008时,出现的问题

1.在MFC应用程序中,我先用ADO连接了ACCESS数据库,可以正常连接~~
ACCESS数据库名为test1,里面有一张数据表,名为user1
表里有三列, 分别是 id、name、age
2.我想试一下程序与SQL SERVER 2008的连接,
于是,我在sql server里建立了一个数据库,名为test1,在库里添加了一张表user1
id和age设为int类型,name设为nchar(10)类型~~
3.在连接部分,我把原来连接ACCESS的字符串改了,变成下面的语句:
hr = m_pConnection->Open("Provider=SQLOLEDB; Server=RICHARDLEE;Database=D:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\test1.mdf; uid=sa; pwd=sa;","","",adModeUnknown);
其中,RICHARDLEE是我本地服务器的名称,
D:\Program Files\Microsoft SQL Server\MSSQL10.MSSQLSERVER\MSSQL\DATA\test1.mdf是我建立的数据库的详细文件名,
数据库没有用户名和密码(设置为windows默认的),
当我运行程序时,提示连接错误,我想知道是什么原因,(PS:我只是改了一下连接字符串而已,其他的地方都未改动)
另外,提示的错误信息是 IDispatch error #3149

第1个回答  推荐于2016-01-29
IDispatch error #3149 是连接字符串错误

在连接SQL Server数据库的时候就需要用到 _ConnectionPtr对象了,代码为:

m_ptrConnection->ConnectionString=L"Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=(数据库名字)HYL;Data Source=(这里填写数据拥有者,例如我的是)HYL-PC";

Integrated Security=SSPI指定的是Windows身份认证
Persist Security Info 属性的意思是表示是否保存安全信息,其实可以简单的理解为“ADO 在数据库连接成功后是否保存密码信息”,True表示保存,False表示不保存。

m_ptrConnection->ConnectionString=L"Provider=SQLOLEDB.1;Persist SecurityInfo=FALSE;User ID=sa;Password=8518225;Initial Catalog=HYL;Data Source=HYL-PC";
Initial Catalog=HYL要访问的数据库名字,Data Source装有数据库的机器名或是IP地址;这个是使用指定的用户名和密码的登陆方式!追问

也就是说,只要在OnInitDlg函数中,使用

m_pConnection->ConnectionString=L"Provider=……“就行了?

不再需要使用m_pConnection->Open()函数?

我没有用Open函数,连接时没有错误,但是运行时出现错误,如图所示

追答

使用m_pConnection->Open()肯定是需要的。
m_pConnection->ConnectionString=L"Provider= .. 这个只是赋值操作

本回答被提问者采纳
相似回答