2017-09-03 48 views
0

工作,我試圖讓使用此代碼從本地數據庫中的數據:SELECT語句不上C#

SqlConnection conn = new SqlConnection(@"Data Source = .\SQLEXPRESS; Initial Catalog = serin; Integrated Security = True"); 
conn.Open(); 

string query = "SELECT UserPassword FROM UserList WHERE UserName = @UserName"; 

SqlCommand cmd = new SqlCommand(query, conn); 
//SqlParameter param = new SqlParameter("@UserName", SqlDbType.VarChar, txt_UserName.TextLength); 
//param.Value = txt_UserName.Text; 

//cmd.Parameters.Add(param); 
cmd.Parameters.AddWithValue("@UserName", "aliserin"); 

當我嘗試以這種方式,它的工作原理。但是當我嘗試從文本框中輸入時,它會返回NULL。我嘗試了評論,但他們也沒有工作。我想也許它是關於類型,但它看起來並不那麼看。

任何幫助將不勝感激。

我使用Visual Studio 2017年和SQL Server 2017

+0

你應該看看[我們可以停止使用AddWithValue()了嗎?](http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using -addwithvalue-already /)並停止使用'.AddWithValue()' - 它可能會導致意想不到的和令人驚訝的結果... –

回答

1

請勿使用參數名稱與列的名稱相同...我歷史上認爲這是一個混淆,因爲它將兩列視爲相同並使用列,而不是參數。嘗試

string query = "SELECT UserPassword FROM UserList WHERE UserName = @parmUserName"; 
SqlCommand cmd = new SqlCommand(query, conn); 
cmd.Parameters.AddWithValue("@parmUserName", txt_UserName.Text); 
+0

謝謝。它在我更改參數名稱時起作用。 –

3

改變這一行

cmd.Parameters.AddWithValue("@UserName", "aliserin"); 

這個

cmd.Parameters.AddWithValue("@UserName", txt_UserName.Text); 

注:Can we stop using AddWithValue() already?感謝@marc_s

+2

你應該看看[我們可以停止使用AddWithValue()了嗎?](http:// blogs。 msmvps.com/jcoehoorn/blog/2014/05/12/can-we-stop-using-addwithvalue-already/)並停止使用'.AddWithValue()' - 它可能會導致意外的和令人驚訝的結果... –

+0

Nope 。我的第一次嘗試是這樣,但沒有奏效。 –