Java PreparedStatement中的参数验证

Java PreparedStatement中的参数验证,java,sql,jdbc,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 (F

我正在开发一个利用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 for prepared语句?

只需在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); 

在执行sql时没有“我认为它是错误的”,要么它是正确的,它执行查询,要么sql是错误的,您会得到一个sqlexception

如果失败了,你应该向论坛提供stacktrace,这样我们就不必读了

“空”是什么意思?
在db中作为空字符串或null为空,需要检查其值在SQL中是否为空。更好的问题是为什么需要检查SQL。实际SQL比我指定的更复杂。我只是想知道是否可以这样使用传递的参数:
?=''
。从一般情况来看,很少用SQL来做。用SQL做有什么好处吗?我知道这不是一种优雅的方式。好的,我会找到一个解决办法。谢谢。这些检查适合在java中进行。没有理由让DB这么做。你能试着把“?”放在右边吗?好的,我现在检查一下,谢谢。这种方法不起作用,但是谢谢。空字符串。只是想检查参数是否为空。