[英]JAVA MYSQL prepared statement giving empty resultset even though query works in mysql admin
[英]Prepared Statement not working even though the same query returns a row when run in toad
我正在尝试使用preparedStatement从数据库中获取一行,该代码看起来像这样:
PreparedStatement preparedStatement = null;
Connection con = new Connection () //pseudo Code added here
String query = "select * from abc where a=? and b=? and c=?";
preparedStatement = con.prepareStatement(query);
preparedStatement.setString(1,"x");
preparedStatement.setString(2,"y");
preparedStatement.setString(3,String.valueOf('Z'));
ResultSet resultset = preparedStatement.executeQuery();
if(resultset.next() == false)
{
throw new exception("No records fetched");
}
但是通过TOAD执行以下查询时,返回一行:
select * from abc where a='x' and b='y' and c='z';
我在这里做错了什么? (where子句中的第三个条件是一个字符)。
这两个查询是不同的,在您发出的TOAD中
select * from abc where a='x' and b='y' and c='z'
而从准备好的语句中,您正在执行以下操作:
select * from abc where a='x' and b='y' and c='Z'
z
与Z
您无需在setParameter中将Oracle CHAR
参数指定为Java char
,因此可以进行更改
preparedStatement.setString(3,String.valueOf('Z'));
到
preparedStatement.setString(3,"z");
要么
preparedStatement.setString(3,String.valueOf('z'));
可能会工作。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.