【发布时间】:2019-12-06 03:44:00
【问题描述】:
以前我用ADO访问SQL Server,ADO连接对象的连接字符串是:
Provider=sqloledb;Data Source=MYPC;Integrated Security=SSPI;
其中 MYPC 是我的计算机名称,SQL Server 作为默认实例安装在我的计算机上。
上面的连接字符串效果很好。
但是,现在据说 ADO 已经过时了,微软又推荐了 ODBC(见https://blogs.msdn.microsoft.com/sqlnativeclient/2011/08/29/microsoft-is-aligning-with-odbc-for-native-relational-data-access/),所以我不得不修改我的代码来改用 ODBC。
所以我将与 SQL Server 的连接更改为以下代码:
CDatabase Database;
// Provider=sqloledb;Data Source=MYPC;Integrated Security=SSPI;
Database.OpenEx(_T("Driver = {SQL Native Client}; Server = MYPC; Trusted_Connection = yes;"), CDatabase::noOdbcDialog);
Database.ExecuteSQL(_T("create database [MyDB2019] on primary (name=[MyDB2019_File],filename='F:\\MyDB2019.mdf')"));
Database.Close();
但是,此代码不起作用。执行Database.OpenEx后会出现CDBException提示
未找到数据源名称且未指定默认驱动程序。
为什么?
注意:我使用的是 Visual C++ 2008 和 ADO
【问题讨论】:
-
“现在说ADO已经过时,MS又推荐ODBC”——你有这句话的参考吗?
-
我也打算这么说。 ODBC 的特定 sql 要求与本机 sql server 不同,因此您可能需要的不仅仅是更改连接。
-
这是一个非常古老的参考,从那时起,我们作为一个社区就一直在努力!第一行写着
EDIT (3/30/2018): OLE DB is now undeprecated. -
@TomC,这是否意味着我们可以继续使用 OLE DB?
标签: c++ sql-server connection odbc ado