最近,我看到很多人使用SQLCommand的Parameters属性为查询提供简单的值-像这样:
var one = "one";
var two = "two";
DataTable results = new DataTable();
string cmdTxt = String.Format("select NAME from TABLE where NAME like @ONE or NAME like @TWO");
using (SqlCommand cmd = new SqlCommand(cmdTxt, Butch.connection))
{
cmd.Parameters.Add("@ONE", SqlDbType.Char, 15).Value = "%" + one + "%";
cmd.Parameters.Add("@TWO", SqlDbType.Char, 65).Value = "%" + two + "%";
using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
adapter.Fill(results);
}
从历史上看,我只是将值嵌入在查询字符串中,如下所示:
var one = "one";
var two = "two";
DataTable results = new DataTable();
string cmdTxt = String.Format($"select NAME from TABLE where NAME like '%{one}%' or NAME like '%{two}%");
using (SqlCommand cmd = new SqlCommand(cmdTxt, Butch.connection))
{
using (SqlDataAdapter adapter = new SqlDataAdapter(cmd))
adapter.Fill(results);
}
我知道在某些情况下cmd.Parameters.Add()特别有用(例如插入二进制数据),因此我不问这些。
我特别在问:
对于一个简单的值,使用该值cmd.Parameters.Add()(如第一个代码示例中)而不是将该值嵌入查询字符串中(如第二个示例中)有什么好处?
编辑添加:
一些评论引用了我声明变量one并two进行了硬编码的事实。我这样做是为了使示例完整(自然),变量将来自其他地方。
宝慕林4294392
相关分类