【发布时间】:2015-05-18 18:48:36
【问题描述】:
我希望在 C# 中的 access 数据库中对多个列执行搜索。 数据按行构建,每列包含相关数据或“*”作为通配符。
举个粗略的例子:
如果我的数据是(,表示新单元格) 福特,嘉年华,*,1998 那么如果我有一个价值......
福特,嘉年华,汽油,1998 年
它会找到并显示该行数据。
目前我正在尝试:
string sql = "SELECT * FROM [mydatabase]
WHERE Manufacturer ='" + textBox1.Text +
"' OR Manufacturer='*' AND Model ='" + textBox2.Text +
"' OR Model='*' AND Fuel ='" + textBox3.Text +
"' OR Fuel='*' AND Year='" + textBox4.Text + "' OR Year='*'";
但这会带来所有值,而不是过滤掉它们。有没有办法在查询中使用 and if/else 而不是 OR?
【问题讨论】:
-
您可以在 linq query 中包含 if else 语句
-
如果你混合使用
AND和OR你应该加上括号,否则AND优先于OR -
旁注 - 你的方法充满了 sql 注入漏洞。使用prepared statements
-
看起来
*是数据库已经支持的null数据库概念的自定义实现。