我正在开发一个使用PreparedStatement的Java应用程序。
SELECT FIELD1, FIELD2 FROM MYTABLE WHERE (FIELD1='firstFieldValue' OR FIELD1='' or 'firstFieldValue'='');
firstFieldValue是一个参数。并且有必要在SQL中检查其值是否为空。
我使用以下参数化SQL创建了一个预准备语句:
SELECT FIELD1, FIELD2 FROM MYTABLE WHERE (FIELD1=? OR FIELD1='' or ?='');
我按如下方式设置值:
preparedStatementInstance.setString(1, this.firstFieldValue);
preparedStatementInstance.setString(2, this.firstFieldValue);
这种方法不起作用。执行失败。
我认为准备好的语句SQL是错误的。
如何针对此案例修复预准备语句的SQL?
答案 0 :(得分:1)
只需在java中查看。
if firstFieldValue.equals("")
then SELECT FIELD1, FIELD2 FROM MYTABLE
else
SELECT FIELD1, FIELD2 FROM MYTABLE WHERE (FIELD1=? OR FIELD1='');
preparedStatementInstance.setString(1, this.firstFieldValue);
答案 1 :(得分:0)
在执行sql时没有'我认为这是错的',要么是正确的又要执行查询,否则sql是错误的并且你得到了一个sqlexception
如果失败了,你应该在论坛上提供堆栈跟踪,这样我们就不用去思考了。
你对'空'是什么意思? 空为空字符串或在数据库
中为空