繁体   English   中英

DSN 到连接字符串?

[英]DSN to connectionstring?

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

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

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

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

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

ODBC 有点难 - 您可以从 ODBC Administrator 创建一个文件 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 的扩展属性中。

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

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

例如,使用 C#:

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

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

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

就我而言,足以:

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

这是由 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM