gpt4 book ai didi

c++ - 为什么我不能让我的 CDatabase 对象理解我的数据源名称?

转载 作者:行者123 更新时间:2023-11-30 03:12:37 24 4
gpt4 key购买 nike

我正在使用 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 的连接,结果相似。这是怎么回事,我该怎么办?

编辑以回答 Neil Butterworth 的问题:

我在ODBC Data Source Administrator中创建DSN时提供的信息如下:

驱动程序:SQL Server
名称:我的系统DSN
服务器:我的机器名
身份验证类型(可以是 Windows 或 SQL Server):Windows
复选框“连接到 SQL Server 以获取其他配置选项的默认设置。”:勾选
复选框“将默认数据库更改为”:勾选并从下拉菜单中选择 myDatabaseName
复选框“使用 ANSI 引用标识符”:勾选
复选框“使用 ANSI 空值、填充和警告”:勾选
复选框“对字符数据执行翻译”:勾选

最佳答案

您似乎缺少密码和服务器的主机名。我想这个有趣的问题是您在对话框中输入了哪些信息来创建 DSN?

编辑:您可能还想看看 this site ,其中有很多连接字符串示例。

Edit2: 我会删除“ODBC;”在字符串的开头。如果这不起作用,我会将 DSN 中的身份验证类型更改为 SQL Server 并显式提供用户 ID 和密码,只是为了检查身份验证不是问题所在。然后我可能会放弃 :-)

关于c++ - 为什么我不能让我的 CDatabase 对象理解我的数据源名称?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/725046/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com