2015-09-27 21 views
0

我試圖加載值從SQL查詢標記:下面的代碼顯示值

sc.Open(); 
string type = Vehicle_cost.SelectedText; 
string query = ("select Type from Vehicle_Registor where Reg_No = '" + type + "';"); 

SqlCommand cmd1 = new SqlCommand(query, sc); 
SqlDataReader sdr = cmd1.ExecuteReader(); 
label23.Text = sdr.ToString(); 
sc.Close(); 
+3

[SQL注入警報(http://msdn.microsoft.com/en-us/library/ms161953%28v=sql.105%29.aspx) - 你應該** **不串連在一起你的SQL語句 - [?我們已經能夠停止使用AddWithValue()]使用參數化** **查詢來避免SQL注入 –

回答

1

嘗試..

sc.Open(); 

string query = @"select Type from Vehicle_Registor where Reg_No = @Reg_No"; 

SqlCommand cmd1 = new SqlCommand(query, sc); 
cmd1.Parameters.AddWithValue("@Reg_No", Vehicle_cost.SelectedText); 

SqlDataReader sdr = cmd1.ExecuteReader(); 
sdr.Read(); 

label23.Text = sdr[0].ToString(); 

sc.Close(); 
+0

你應該看看(http://blogs.msmvps.com/jcoehoorn/blog/2014/05/12/可以,我們一站式使用 - addwithvalue-已經/),並停止使用'.AddWithValue()' - 它可能會導致意外和令人驚訝的結果... –

0

嘗試是這樣的:

SqlCommand cmd1 = new SqlCommand(query, sc); 
using (SqlDataReader sdr = cmd1.ExecuteReader()) 
{ 
    while (sdr.Read()) 
    { 
     for (int i = 0; i < sdr.FieldCount; i++) 
     { 
      label23.text += sdr[i].ToString(); 
     } 
    } 
} 
sc.Close(); 
+1

手柄OP的問題,正確回答的同時。第一個查詢本身受** SQLInjection **,你爲什麼認爲他需要一個循環迭代。每輛車註冊一次,概念很簡單。 –

+0

@AmneshGoel如果查詢返回也許標量值,它更合理的使用'ExecuteScalar'? –