2010-11-26 43 views
0

因此,在我的程序中,我可能在不同的地方有50個左右的文本框。我知道如何用某些東西替換單引號(在這種情況下是' - > \'),但我認爲必須有更好的方式來完成此操作,併爲每個文本框添加特定的代碼。我必須這樣做,因爲當這些東西被髮送到數據庫時,如果有一個單引號,它會給出一個錯誤。有沒有辦法改變默認的TextBox控件行爲,以便程序中的所有文本框都自動用\'替換所有單引號?用我的程序中的所有文本框替換'with'

編輯:

 string statement = "select count(*) from users where username='@username'"; 
    MySqlCommand command = new MySqlCommand(statement, conn); 
    command.Parameters.AddWithValue("@username", username); 
    if (Convert.ToInt32(command.ExecuteScalar()) == 1) 

我一直在玩的paramerterized代碼,這就是我現在所擁有的。從我的理解來看,語句字符串與以前基本相同,但是我曾經有過使用參數(我稱爲@username)的變量「username」,然後創建該命令。然後在parameters.addwithvalue中,它將用參數username替換變量username中的任何值。不幸的是,這不適合我,我真的不明白它有什麼用處,因爲用戶名仍然只是在命令中卡住了?

編輯:發現問題,在聲明中,你不需要把周圍「@用戶名」

所以單引號,應該是:

string statement = "select count(*) from users where [email protected]"; 

回答

6

不要使用級聯構建SQL查詢。使用正確的parametrized queries。這將使重複查詢速度更快,並且還將消除輸入消毒代碼(例如,將'替換爲\')和SQL注入攻擊。

+0

我編輯了我的文章,請你再看一遍。我不確定如何有效地在這些評論中發佈代碼,所以我只是把它放在那裏。 – zack 2010-11-26 23:20:40

+0

謝謝。你幫了我一噸:D – zack 2010-11-26 23:44:19

0

U可以使用onKeyUp javascript函數或asp.net OnTextChanged事件來創建會改變引號的函數。

1

您應該使用參數化查詢,不僅可以解決您遇到的問題,還可以減少您對SQL注入的暴露。當您使用字符串連接來構建SQL查詢時,您可以獲得SQL injection攻擊。

相關問題