PreparedStatement中的参数验证

时间:2011-08-26 08:59:14

标签: java sql jdbc

我正在开发一个使用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?

2 个答案:

答案 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

如果失败了,你应该在论坛上提供堆栈跟踪,这样我们就不用去思考了。

你对'空'是什么意思?  空为空字符串或在数据库

中为空