天天看點

再也不用擔心連不上資料庫了

大家好,初學者遇到資料庫連接配接不上,是很常見的情況,可能會以各種形式呈現出來,今天跟大家分享一下,如何解決C#連接配接不上資料庫的問題。

本文主要針對的是SQLServer資料庫,采用sa賬戶登入,配置檔案采用appconfig,本地資料庫的情況,如果情形不一樣,可能無法涵蓋。

以下這幾種情況,都可能是連接配接字元串導緻的問題,可能還會有其他情況,後續再完善補充。

(1)代碼報錯,提示sa登入失敗。

再也不用擔心連不上資料庫了

 (2)提示連接配接出錯,未找到或無法通路伺服器。

再也不用擔心連不上資料庫了

 (3)代碼報錯,提示類型初始值設定項引發異常。

再也不用擔心連不上資料庫了

 (4)直接彈窗,提示類型初始值設定項引發異常。

再也不用擔心連不上資料庫了

 (5)代碼報錯,不支援關鍵字。

再也不用擔心連不上資料庫了

 (6)代碼報錯,提示未将對象引用到對象的執行個體

再也不用擔心連不上資料庫了

 (7)代碼報錯,提示初始值設定引發異常項

再也不用擔心連不上資料庫了

第一步:首先一定要保證SMMS可以連接配接上資料庫,這是一個大的前提,如果SSMS都不能連接配接資料庫,就先解決這個問題之後,再往後面看。

再也不用擔心連不上資料庫了

第二步:如果SSMS可以連接配接資料庫,那麼我們觀察一下這個登入界面分析一下,SQLServer連接配接字元串主要由四個部分組成,分别是伺服器名稱Server、資料庫名稱DataBase、使用者ID即Uid、密碼即Pwd,除了資料庫名稱之外,其他三個參數都應該與這上面的保持一緻,否則就會出錯。

第三步:簡而言之,就是把SSMS這個登入界面的參數資料複制到連接配接字元串裡,進行替換即可。

再也不用擔心連不上資料庫了

第四步:複制完成之後,如果采用的是字元串方式,對于命名執行個體是可能會出現文法錯誤的,這個是因為轉義的問題,解決方案有兩種,第一種方式是在連接配接字元串前面加個@進行轉義,第二種方式是将連接配接字元串中的單斜杠改成雙斜杠。

private string ConnStr=@"Server=DESKTOP-ICFINTH\Wincc;DataBase=ProductDB;Uid=sa;Pwd=123";
private string ConnStr = "Server=DESKTOP-ICFINTH\\Wincc;DataBase=ProductDB;Uid=sa;Pwd=123";

如果問題仍然沒有解決,按照下面的步驟進行檢查:

(1) 檢查資料庫名稱是否正确

再也不用擔心連不上資料庫了
再也不用擔心連不上資料庫了

 (2) 檢查connectString的名稱有沒有錯誤

再也不用擔心連不上資料庫了

 (3) 檢查下面這行代碼有沒有錯誤

再也不用擔心連不上資料庫了

(4) 對照檢查SQLHelper裡的代碼有沒有錯誤

以下幾個概念問題,需要大家注意:

(1)怎麼判斷是命名執行個體還是預設執行個體?

如圖,伺服器名稱為DESKTOP-5DI6FNQ,這種就是預設執行個體。

再也不用擔心連不上資料庫了

 當名稱中帶有 ’ \ ’ 時,例如DESKTOP-5DI6FNQ\WINCC,這種就是命名執行個體,其中WINCC就是執行個體名稱,預設執行個體和命名執行個體可以共存,也可以有多個執行個體名稱。

再也不用擔心連不上資料庫了

(2)使用appconfig和不用appconfig有什麼差別?

使用appconfig方式是通過xml配置檔案來擷取連接配接字元串。配置檔案可以通過記事本等其他軟體打開并修改。這樣就可以使用不更改代碼的方式改變資料庫的連接配接字元串。不使用appconfig,隻能在代碼中定義固定的連接配接字元串。

有一點要注意,對于命名執行個體,如果直接用字元串的方式,是需要雙斜杠或@轉義,如果是appconfig的方式,則是單斜杠,不能寫成雙斜杠。

本文隻是從常見的錯誤角度來說明了解決方案和排查步驟,實際情況錯綜複雜,隻有掌握好方法和思路,才能盡快解決問題。

-END-