2014-04-09 42 views
0
SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;Integrated Security=True;AttachDbFilename=c:\users\name\documents\visual studio 2013\Projects\DBSample\DBSample\Database1.mdf"); 
SqlCommand cmd = new SqlCommand("Select * From Account", con); 
SqlDataReader rd= cmd.ExecuteReader(); ; 

這是我的代碼,用於連接到database1.mdf,但它不起作用。LocalDB(.mdf)的連接字符串無法在WPF上工作

我看到其他職位,這應該已經工作

+1

是否有例外? 「但它不起作用」沒有用。 – Crono

+0

我們需要更多的細節來回答你的問題。你得到任何異常或錯誤信息? –

回答

4

您還沒有打開連接,你需要打開與執行查詢之前的數據庫連接。

這樣做:

SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;Integrated Security=True;AttachDbFilename=c:\users\name\documents\visual studio 2013\Projects\DBSample\DBSample\Database1.mdf"); 
SqlCommand cmd = new SqlCommand("Select * From Account", con); 
con.Open(); 
SqlDataReader rd= cmd.ExecuteReader(); 

說明:

其他的例子,你可能閱讀使用的SqlDataAdapter它會顯示你的連接。但是,如果直接使用SqlCommand,則需要自行打開連接。

+0

說明:您閱讀的其他示例可能使用「SqlDataAdapter」,它會爲您打開連接。但是,如果直接使用'SqlCommand',則需要自己打開連接。 –

+0

感謝您的添加說明.. @ ThorstenDittmar –

+0

謝謝:)它的工作原理,我不知道SqlDataAdapter 編輯:是否有可能使AttachDbFilename相對? –

0

由於您沒有提供具體的Exception的詳細信息,因此我會用顯而易見的信息:當您嘗試執行SQL查詢時,您的連接尚未打開。不僅如此,你的物體也永遠不會被拋棄。

一個更好的實現是這樣的:

using (SqlConnection con = new SqlConnection(@"Data Source=(LocalDB)\v11.0;Integrated Security=True;AttachDbFilename=c:\users\name\documents\visual studio 2013\Projects\DBSample\DBSample\Database1.mdf")) 
{ 
    using (SqlCommand cmd = new SqlCommand("Select * From Account", con)) 
    { 
     // here the connection opens 
     con.Open(); 

     using (SqlDataReader rd = cmd.ExecuteReader()) 
     { 
      // do your data reading here 
     } 
    } 
} 

using聲明將確保您concmdrd對象得到妥善處理。

+0

謝謝:)你的執行比普通的做法更好 –

+0

@ FranzJustinA.Buenaventura其實常見的做法應該是始終處理當他們不再需要時,實現'IDispose'接口的對象,但是你非常歡迎。 – Crono