像往常一樣,從來不使用字符串連接來構建SQL命令。使用參數化查詢
string query = "SELECT * FROM [Contact Management] WHERE [email protected] OR [email protected]";
SqlCommand cmd = new SqlCommand(query, con);
cmd.Parameters.AddWithValue("@mobile", Convert.ToInt32(txtSearch.Text));
cmd.Parameters.AddWithValue("@name", txtSearch.Text);
SqlDataAdapter da= new SqlDataAdapter (cmd);
參數化查詢將保存您的數據庫從Sql注入攻擊,但也解析您的輸入文本中的問題。如果在搜索文本中你有單引號呢?連接時會出現語法錯誤。
但是,讓我說,你的代碼將在此之前失敗。如果你的txtSearch中有一個數字,那麼一切都會工作,但如果你有一個字符串。轉換爲Convert.ToInt32的數字將失敗。最好使用
SqlCommand cmd = new SqlCommand();
string query;
int numSearch;
if(Int32.TryParse(txtSearch.Text, out numSearch))
{
query = "SELECT * FROM [Contact Management] WHERE [email protected]";
cmd.Parameters.AddWithValue("@p1", numSearch);
}
else
{
query = "SELECT * FROM [Contact Management] WHERE [email protected]";
cmd.Parameters.AddWithValue("@p1", txtSearch.Text);
}
cmd.CommandText = query;
....
不正確的,在所有你不應該有'txtSearch.Text'纏任何引號什麼那麼......我會親自看看使用'參數Query'以及 – MethodMan 2013-05-13 21:14:35
,但如果我刪除代碼段之後,然後它正在工作....這是刪除或部分後,我可以至少選擇移動=某些價值...所以引號不會產生任何問題,我認爲如此...... – user2375245 2013-05-13 21:17:01
你需要使用參數插入用戶數據到SQL查詢... – konkked 2013-05-13 21:20:21