首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么我不能让我的CDatabase对象来理解我的数据源名称?

为什么我不能让我的CDatabase对象来理解我的数据源名称?
EN

Stack Overflow用户
提问于 2009-04-07 10:44:05
回答 4查看 2.5K关注 0票数 1

我正在使用MFC类CDatabase。要建立到Server的连接,我使用连接字符串调用OpenEx()。我的问题是,对象似乎无法解释字符串的DSN部分。连接字符串如下所示:

代码语言:javascript
复制
 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空号、填充和警告”:勾选

复选框“对字符数据执行转换”:勾选

EN

回答 4

Stack Overflow用户

发布于 2009-04-07 10:47:02

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

编辑:--您可能还想看看本站,它有很多连接字符串示例。

Edit2: --我将删除字符串开头的"ODBC;“。如果这不起作用,我会将DSN中的身份验证类型更改为SQL server,并显式地提供用户id和密码,以检查身份验证没有问题。然后我可能会放弃-)

票数 2
EN

Stack Overflow用户

发布于 2009-04-07 12:13:42

多亏了Neil,我找到了一个有用的答案这里

“Client};Server=myMachineName;Database=myDatabaseName;Trusted_Connection=yes;”{SQL本机Driver=

我仍然很困惑为什么在连接工作时调用GetConnect()不能产生一个完美的DSN字符串,但是现在我已经有了一个没有DSN的解决方案,所以我不太在意!

票数 1
EN

Stack Overflow用户

发布于 2009-04-07 11:31:12

一些备选方案:

  • 它是系统还是用户DSN?也就是说,DSN对正在执行的用户是可见的吗?
  • 尝试删除UID=myUsername
  • 尝试Driver=ODBC而不是ODBC

为什么您使用的是DSN,而不是常规的、自包含的连接字符串?比如Driver=SQLOLEBD;WSID=myMachineName;DATABASE=myDatabaseName;Trusted_Connection=Yes;

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/725046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档