2015-02-23 57 views
4

爲什麼System.Data.SqlClient.SqlConnection類拋出一個異常,「參數不正確」?ASP.NET連接字符串到本地SQL Server數據庫,使用web.config

我試圖學習如何使用.NET框架4.5使用本地SQL數據庫和ASP.NET MVC項目建立數據庫連接。

下面是我所採取的導致了這個步驟:

  1. 在我的項目App_Data文件夾中創建一個新的SQL Server數據庫,名爲TestSQLdb.mdf

  2. 創建一個連接字符串中web.config

    <add name="SQLTestConnection1" 
        connectionString="Data Source=(LocalDB);initial catalog=TestSQLdb;Integrated Security=true" /> 
    
  3. 通過

    string cn_str = ConfigurationManager.ConnectionStrings["SQLTestConnection1"].ConnectionString; 
    

    訪問連接字符串(見this SO線程的詳細信息在此)。

  4. 創建一個新的連接:

    SqlConnection conn = new SqlConnection(cn_str); 
    
  5. 嘗試打開連接:

    try 
    { 
        conn.Open(); 
    

    在這一點上,則拋出異常。

我試圖設置它,所以它會簡單易學。我錯過了什麼?

+0

你真的調用一個方法'cn_str()'在'新SqlConnection'或者是它只是一個錯字? – 2015-02-23 20:50:58

+0

@PilgerstorferFranz:'cn_str()'方法在我的代碼中是正確的,但是例如這裏應該只是'cn_str'。感謝您指出。我會編輯我的問題,因爲@ NightOwl888在下面的回答中也指出了這個問題。 – 2015-02-23 21:06:38

回答

5

當你用的LocalDB工作,你必須指定你的connectionString一個AttachDbFileName屬性。此屬性應該指向您的TestSQLdb.mdf文件。初始目錄是您的mdf文件中dataBase的名稱。

看到MSDN這個例子

<add name="ConnectionStringName" 
providerName="System.Data.SqlClient" 
connectionString="Data Source=(LocalDB)\v11.0;AttachDbFileName=|DataDirectory|\DatabaseFileName.mdf;InitialCatalog=DatabaseName;Integrated Security=True;MultipleActiveResultSets=True" /> 
+0

是的,就是這樣。 +1爲有用的鏈接。 – 2015-02-23 21:10:13

0

您沒有將變量傳遞給new SqlConnection,而是嘗試調用一個名爲cn_str的函數。

要使其起作用,您需要從名稱中刪除括號。

SqlConnection conn = new SqlConnection(cn_str); 
+0

嗯,我的錯我沒有指出我實際上使用函數來獲取'cn_str'。感謝您指出了這一點,但這不是我想的問題。如果需要,我會編輯我的問題。 – 2015-02-23 21:05:07

+0

如果這是問題所在,那麼錯誤信息會有所不同,例外情況會在不同的時間發生。 – mason 2015-02-23 21:25:02

相關問題