我正在使用MFC类CDatabase。为了建立与SQL Server的连接,我使用连接字符串调用OpenEx()。我的问题是该对象似乎无法解释字符串的DSN部分。连接字符串如下所示:
ODBC;DSN=mySystemDSN;UID=myUsername;WSID=myMachineName;DATABASE=myDatabaseName;Trusted_Connection=Yes
那应该是对的,因为我是通过使用OpenEx(NULL),手动选择数据源然后调用GetConnect()来获得的。
但是此字符串似乎包含的信息不足:OpenEx()总是会弹出一个对话框,要求更多信息。我从此对话框中选择什么似乎无关紧要-我可以选择与完全不同的数据库关联的DSN,并且一切仍然有效(在这种情况下,对GetConnect()的调用表明它正在使用我的连接字符串,但DSN除外)部分,是从其他数据源借来的)。
我需要我的应用程序能够自动连接到数据库-对话框很麻烦。我已经尝试了DSN较少的连接,结果相似。这是怎么回事,我该怎么办?
编辑以回答尼尔·巴特沃思的问题:
在ODBC数据源管理器中创建DSN时提供的信息如下:
驱动程序:SQL Server
名称:mySystemDSN
服务器:myMachineName
身份验证类型(可以是Windows或SQL Server):Windows
复选框“连接到SQL Server以获取其他配置选项的默认设置。”:选中
复选框“将默认数据库更改为”:选中,并从下拉菜单中选择myDatabaseName
复选框“使用ANSI带引号的标识符”:已打勾
复选框“使用ANSI空值,填充和警告”:勾选
复选框“对字符数据执行翻译”:勾选
最佳答案
您似乎缺少密码和服务器的主机名。我想有趣的问题是您在对话框中输入了哪些信息来创建DSN?
编辑:您可能还想看看this site,它有很多连接字符串示例。
Edit2:我将删除“ODBC;”。在字符串的开头。如果那不起作用,我将在DSN中将身份验证类型更改为SQL Server,并显式提供用户ID和密码,只是为了检查身份验证不是问题。然后我可能会放弃:-)