DSN到连接字符串?

时间:2009-06-17 16:05:53

标签: asp.net odbc connection-string dsn

我们有一个ASP.NET网站,它使用我们希望能够使用连接字符串的数据库。我们已成功设置DSN以连接到此数据库,但我似乎无法发现使用连接字符串的正确魔法。

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

(我去了connectionstrings.com试图确保我的连接字符串格式正确,但似乎没有任何工作......这就是为什么我正在尝试这种奇怪的翻译来自dsn的机智。)

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

4 个答案:

答案 0 :(得分:6)

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

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

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

答案 1 :(得分:4)

如果您已创建DSN,则DSN 是ConnectionString!

您只需使用DSN=<YourDSNName>并将其传递给OdbcConnection对象。

例如,使用C#:

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

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

答案 2 :(得分:3)

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

答案 3 :(得分:1)

就我而言,足以:

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

这是我的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