2012-06-30 18 views
0

我有問題,當我從數據庫提取數據時,如果在數據庫中有一些引用數據,例如D`DUN。這些數據被插入到數據庫中。當我執行選擇查詢,如:從數據庫提取引用數據出錯

Select city from glmast where glname='" + list_customer.Items[i].Value + "' 

在list_cutomer中有一些數據插入像D`DUN像引號一樣的數據。所以它會給出未封閉的報價等錯誤。

那麼,這將如何解決,因爲並非所有的字段都包含引號。

請幫助我.. Mitesh

+0

嘗試替換 「 '」 與@ 「\'」。 – Thinhbk

+0

我替換請你能告訴我更多 –

+0

我可以寫什麼而不是glname ='「+ list_customer.Items [i] .Value +'' –

回答

2

構建SQL查詢時,你不應該使用字符串連接。您應該使用參數化查詢。不僅如此,您的代碼會在您描述的情況下中斷,但更糟糕的是,您的代碼易受到SQL injection的影響,並且如果您的應用程序落入惡意用戶的手中,您的數據庫將被破壞。

所以參數化查詢:

string sql = "SELECT city FROM glmast WHERE glname = @glname"; 
using (var conn = new SqlConnection("Some connection string")) 
using (var cmd = conn.CreateCommand()) 
{ 
    conn.Open(); 
    cmd.Parameters.AddWithValue("@glname", list_customer.Items[i].Value); 
    using (var reader = cmd.ExecuteReader()) 
    { 
     while (reader.Read()) 
     { 
      // do something with the results 
     } 
    } 
}