[英]SqlException: Incorrect syntax near the keyword 'AND'
我正在使用C#和SQL Server 2008制作管理程序。我希望一次使用血型,區和俱樂部名稱來搜索記錄。 這就是問題所在:
SqlDataAdapter sda = new SqlDataAdapter("SELECT * FROM Table2
WHERE @Blood_Group =" + tsblood.Text + "AND @District =" + tsdist.Text +
"AND Club_Name =" + tscname.Text, Mycon1);
任何人都可以告訴我什么是正確的語法? Tnx提前。 :)
正確的語法是使用參數化查詢,絕對不會在構建SQL查詢時使用字符串連接:
string query = "SELECT * FROM Table2 WHERE BloodGroup = @BloodGroup AND District = @District AND Club_Name = @ClubName";
using (SqlDataAdapter sda = new SqlDataAdapter(query, Mycon1))
{
sda.SelectCommand.Parameters.AddWithValue("@BloodGroup", tsblood.Text);
sda.SelectCommand.Parameters.AddWithValue("@District", tsdist.Text);
sda.SelectCommand.Parameters.AddWithValue("@ClubName", tscname.Text);
...
}
這樣,您的參數將被正確編碼,並且您的代碼不容易受到SQL注入攻擊。 結帳bobby tables
。
還要注意我如何將IDisposable資源(如SqlDataAdapter)包裝到using語句中,以確保即使出現異常也能正確處理它,並且程序不會泄漏非托管句柄。
你忘了一個AND
(並且可能在Club_Name
前面有一個@
):
String CRLF = "\r\n";
String sql = String.Format(
"SELECT * FROM Table2" + CRLF+
"WHERE @Blood_Group = {0}" + CRLF+
"AND @District = {1} " + CRLF+
"AND Club_Name = {2}",
SqlUtils.QuotedStr(tsblood.Text),
SqlUtils.QuotedStr(tsdist.Text),
SqlUtils.QuotedStr(tscname.Text));
SqlDataAdapter sda = new SqlDataAdapter(sql, Mycon1);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.