我正在使用MFC类CDatabase。要建立到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时提供的信息如下:
驱动程序: Server
名称: mySystemDSN
服务器: myMachineName
身份验证类型(可以是Windows或Server):Windows
复选框“连接到Server以获取附加配置选项的默认设置”:勾选
复选框“将默认数据库更改为”:勾选并从下拉菜单中选择myDatabaseName
复选框“使用ANSI引号标识符”:勾选
复选框“使用ANSI空号、填充和警告”:勾选
复选框“对字符数据执行转换”:勾选
发布于 2009-04-07 10:47:02
您似乎缺少了一个密码和服务器的主机名。我想有趣的问题是,您在对话框中输入了哪些信息来创建DSN?
编辑:--您可能还想看看本站,它有很多连接字符串示例。
Edit2: --我将删除字符串开头的"ODBC;“。如果这不起作用,我会将DSN中的身份验证类型更改为SQL server,并显式地提供用户id和密码,以检查身份验证没有问题。然后我可能会放弃-)
发布于 2009-04-07 12:13:42
多亏了Neil,我找到了一个有用的答案这里
“Client};Server=myMachineName;Database=myDatabaseName;Trusted_Connection=yes;”{SQL本机Driver=
我仍然很困惑为什么在连接工作时调用GetConnect()不能产生一个完美的DSN字符串,但是现在我已经有了一个没有DSN的解决方案,所以我不太在意!
发布于 2009-04-07 11:31:12
一些备选方案:
UID=myUsernameDriver=ODBC而不是ODBC为什么您使用的是DSN,而不是常规的、自包含的连接字符串?比如Driver=SQLOLEBD;WSID=myMachineName;DATABASE=myDatabaseName;Trusted_Connection=Yes;
https://stackoverflow.com/questions/725046
复制相似问题