【发布时间】:2012-09-15 16:32:16
【问题描述】:
我有九个字符串,它们要么是 SQL 查询,要么是空的 (""),具体取决于几个复选框的状态。我需要将它们组合在另一个字符串中,例如
string OP = "AND";
string query = "select * from table where " + string1 + OP + string2 + OP + string3 + OP + ... + " order by ID;"
问题是,在字符串之间,我需要一个AND 或OR。但如果任何字符串为空,它会给我一个 SQL 错误。 SQL 不理解类似
select * from table where AND a = "adsf" AND AND AND z = "fghj" AND order by ID;
它必须看起来像这样:
select * from table where a = "adsf" AND z = "fghj" order by ID;
【问题讨论】:
-
不要使用原始 SQL。 至少使用 parameterized queries。否则你很容易受到 SQL 注入和混乱、容易出错的命令连接代码的攻击。
-
你的代码是什么样的?让我们从你所拥有的开始工作。
-
您知道,您可能应该提供括号,因为您可能会混合运算符。此外,您应该在这里使用 stringbuilders。另外,不要这样做:这是不安全的(除非您绝对控制所有值)。即使这样:使用参数查询(a.k.a Prepared Statements)
标签: c# sql string logical-operators