如何将此添加到此字符串查询?

时间:2013-11-30 20:40:36

标签: sql

如何添加相同的select * from database2.western内容,但名称='“并与此代码合并(在同一查询中)

string Query = "select * from database2.western where id='" + comboBox1.Text + "'  ;";

2 个答案:

答案 0 :(得分:3)

您不应该直接在SQL查询中使用用户输入 - 它会让您对SQL injection attack开放。

如果您确实想要,请使用:

string Query = "select * from database2.western where id='" + comboBox1.Text + "' OR name = '" + comboBox1.Text+ "'  ;";

在实践中,您至少应该逃避用户输入中的任何引号。但是,您使用的任何SQL库都有某种转义方法。假设它确实,并且它被称为escape,您可以使用:

string idOrName = escape(comboBox1.Text);
string Query = "select * from database2.western where id='" +idOrName + "' OR name = '" + idOrName + "'  ;";

或者更好的是,如果您的库支持参数化查询,例如:

string Query = "select * from database2.western where id=? OR name = ?";
DatabaseEngine.runParameterisedQuery(Query, idOrName, idOrName);

这是伪代码 - 将DatabaseEngine.runParameterisedQuery替换为适用于您的库的内容。

答案 1 :(得分:0)

where [name] = somevalue or [name] = ''

正如所建议的那样,你对sql注入攻击持开放态度,应该使用参数化查询。