SqlException:关键字"AND"附近的语法不正确

Sin*_*ras 3 c# sql-server

我正在使用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);
Run Code Online (Sandbox Code Playgroud)

任何人都可以告诉我什么是正确的语法?Tnx提前.:)

Dar*_*rov 7

正确的语法是使用参数化查询,绝对不会在构建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);
    ...
}
Run Code Online (Sandbox Code Playgroud)

这样,您的参数将被正确编码,并且您的代码不容易受到SQL注入攻击.结帐bobby tables.

还要注意我如何将IDisposable资源(如SqlDataAdapter)包装到using语句中,以确保即使出现异常也能正确处理它,并且程序不会泄漏非托管句柄.