我遇到了一個嚴重問題,導致在我的C#應用程序中的一個searchBar TextBox中進行驗證。字符串'ORDER BY CHECKTIME DESC'後未使用引號'
每次我運行程序並輸入文本,數字或甚至某些特殊字符時,我都沒有問題......但是,第二個使用引號(')時出現錯誤,如標題。
下面是我用在執行特定進程的代碼,請能有人來救我:
SqlDataAdapter sda1 = new SqlDataAdapter(
"SET ROWCOUNT 25
select ui.USERID [User ID],
ui.BADGENUMBER [Employee No.],
ui.NAME [Name],
ci.CHECKTIME [Clock Time],
ci.CHECKTYPE [I/O],
ci.SENSORID [Sensor ID]
FROM
USERINFO ui,
CHECKINOUT ci
WHERE
ui.USERID = ci.USERID and
ci.CHECKTYPE in ('I','O') and
ui.NAME like '%" + searchBar.Text + "%'
ORDER BY
CHECKTIME DESC ", con);
提前感謝的人...
千萬不要連接用戶輸入來創建SQL。請搜索「Bobby Tables」。您應該使用*參數*,即'... ui.NAME like'%'+ @name +'%'ORDER BY ...',其中'@ name'是一個參數, searchBar.Text'。如果你的大部分數據訪問看起來像這樣,那麼你現在需要停止**並重新訪問整個數據訪問層:它被危險地破壞了。 –
@mrBrown如果你不這樣使用,因爲可能有SQL注入的機會。 –
@DhavalPatel我會說這是有把握的; p –