9

我们有一个使用数据库的 ASP.NET 网站,我们希望能够使用连接字符串来访问该数据库。我们已经成功地设置了一个 DSN 来连接到这个 DB,但我似乎无法发现使用连接字符串的正确魔法。

有没有一种直接的方法可以将 DSN 中的值转换为连接字符串?我知道从 UI 来看,没有一个明显的答案……每个 db 供应商都提供不同的 UI 来根据他们的需要创建 DSN。然而,我希望在 UI 下它可能只是在做一些事情,比如在幕后创建一个连接字符串,我可以看看它,看看我做错了什么。这有希望吗?如果是这样,有关如何获取我需要的信息的任何指示?

(我已访问 connectionstrings.com 以尝试确保我的连接字符串格式正确,但似乎没有任何效果......这就是为什么我要尝试这种奇怪的 translate-from-dsn 技巧。)

编辑:我一定不清楚的是我们不想有一个 DSN 条目。我们已经创建了一个,并且暂时使用了它,但是我们希望能够摆脱它并使用没有dsn 的连接字符串。

4

4 回答 4

8

如果您可以使用 OLEDB,那么您可以创建一个UDL 文件。只需创建一个新的文本文档,test.udl然后双击。填写对话框,然后使用记事本将其打开。瞧——这是你的连接字符串。

ODBC 有点难——您可以从 ODBC 管理器创建文件 DSN,也可以在注册表中HKLM\Software\ODBC\ODBC.INI\<DSN Name>查找系统 DSN。您最终会得到一些名称/值对。您应该能够将它们转换为连接字符串。将\\Driver列出实际的 DLL,因此您需要从HKLM\Software\ODBC\ODBC Data Sources\\<DSN Name>.

如果您可以为 ODBC 使用 OLEDB 提供程序,那么您可以使用 UDL 技巧并让它也从 ODBC 文件 DSN 构建连接字符串。ODBC 连接字符串将位于 UDL 的扩展属性中。

于 2009-06-17T18:18:08.320 回答
4

如果您已经创建了 DSN,那么 DSN就是ConnectionString !

您可以简单地使用DSN=<YourDSNName>并将其传递给 OdbcConnection 对象。

例如,使用 C#:

string dsnName = "DSN=MyDSN";
using (OdbcConnection conn = new OdbcConnection(dsnName))
{
  conn.Open();
}

或者,您可以使用OdbcConnectionStringBuilder该类并设置其DSN属性。

于 2009-06-17T16:11:27.023 回答
3

扩展 Mark Brackett 关于注册表的回答:对于 64 位 Windows 上的 32 位 ODBC,注册表路径为 HKLM\Software\Wow6432Node\ODBC\ODBC.INI\

于 2013-11-22T19:04:32.470 回答
3

就我而言,足以:

  • 删除标题
  • 用分号替换所有新行
  • 使用大括号作为组分隔符

这是由 ODBC 数据源管理员创建的我的 DSN 文件(第 3 个选项卡 - 文件 DSN)

[ODBC]
DRIVER=MySQL ODBC 5.3 ANSI Driver
UID=MyUserName
PORT=3306
DATABASE=mydatabasename
SERVER=localhost

这是我的连接字符串的样子:

DRIVER={MySQL ODBC 5.3 ANSI Driver};UID=MyUserName;PORT=3306;DATABASE=mydatabasename;SERVER=localhost
于 2017-10-31T21:14:03.963 回答