我正在使用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提前.:)
正确的语法是使用参数化查询,绝对不会在构建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语句中,以确保即使出现异常也能正确处理它,并且程序不会泄漏非托管句柄.
| 归档时间: |
|
| 查看次数: |
3036 次 |
| 最近记录: |