代码之家  ›  专栏  ›  技术社区  ›  Beska

DSN到ConnectionString?

  •  4
  • Beska  · 技术社区  · 15 年前

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

    有没有一种简单的方法可以将DSN中的值转换为连接字符串?我知道从用户界面上看,没有一个明显的答案……每个数据库供应商都提供了一个不同的用户界面,用于根据需要创建DSN。然而,我希望在用户界面下,它可能只是在幕后创建一个连接字符串,我可以查看它,看看我做错了什么。有希望吗?如果是的话,有什么关于如何得到我需要的信息的建议吗?

    (我已经访问connectionstrings.com以确保我的连接字符串的格式正确,但似乎没有任何效果……这就是为什么我要尝试从dsn tact进行这种奇怪的转换。)

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

    4 回复  |  直到 7 年前
        1
  •  6
  •   Mark Brackett Achilles Ram Nakirekanti    15 年前

    如果可以使用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> .

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

        2
  •  4
  •   Cerebrus    15 年前

    如果已创建DSN,则DSN 连接字符串!

    你可以简单地使用 DSN=<YourDSNName> 并将其传递给一个odbcconnection对象。

    例如,使用c:

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

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

        3
  •  3
  •   JF Menard    11 年前

    扩展Mark Brackett关于注册表的答案:对于64位窗口上的32位ODBC,注册表路径为hklm\software\wow6432node\odbc\odbc.ini\

        4
  •  0
  •   Ivan Gagne    7 年前

    就我而言,这足以:

    • 拆下收割台
    • 用分号替换所有新行
    • 使用大括号作为组分隔符

    这是由ODBC数据源管理员创建的我的DSN文件(第三个选项卡“文件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