簡體   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