簡體   English   中英

SqlException:關鍵字“AND”附近的語法不正確

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM