简体   繁体   English

即使在蟾蜍中运行相同查询时,即使同一查询返回一行,Prepared Statement也无法正常工作

[英]Prepared Statement not working even though the same query returns a row when run in toad

I am trying to get a row from DB using preparedStatement using a code which somewhat looks like this: 我正在尝试使用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");
}

but the following query when executed via TOAD, returns a row: 但是通过TOAD执行以下查询时,返回一行:

select * from abc where a='x' and b='y' and c='z';

What am I doing wrong here? 我在这里做错了什么? (The third condition in where clause is a char). (where子句中的第三个条件是一个字符)。

The two queries are different, in TOAD you're issuing 这两个查询是不同的,在您发出的TOAD中

select * from abc where a='x' and b='y' and c='z'

whereas from your prepared statement you're doing the equivalent of: 而从准备好的语句中,您正在执行以下操作:

select * from abc where a='x' and b='y' and c='Z'

z is not the same as Z zZ

You don't need to specify Oracle CHAR parameters as Java char in the setParameter, so changing 您无需在setParameter中将Oracle CHAR参数指定为Java char ,因此可以进行更改

preparedStatement.setString(3,String.valueOf('Z'));

to either

preparedStatement.setString(3,"z");

or 要么

preparedStatement.setString(3,String.valueOf('z'));

will probably work. 可能会工作。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 JAVA MYSQL准备的语句给出空结果集,即使查询在mysql admin中也有效 - JAVA MYSQL prepared statement giving empty resultset even though query works in mysql admin 在Java中设置参数时,准备好的语句查询构建不起作用 - Prepared Statement query building not working when the parameters are setting in java 预处理语句不返回任何结果,类似查询 - Prepared statement returns no result with like-query 运行同一查询时,Java语句executeQuery返回的结果与SQLDeveloper中返回的结果不同 - Java Statement executeQuery returns different results than in SQLDeveloper when the same query is run 即使表达式为假,IF 语句仍在运行 - IF statement being run even though expression is false 带SELECT的准备好的语句返回0 - Prepared statement with SELECT returns 0 准备好的语句返回部分记录,即3,而针对同一查询的sql开发人员返回所有记录,即5 - Prepared Statement returning partial records i.e 3 whereas sql developer for the same query returns all records i.e 5 即使生成的查询在 postgres 控制台中使用时返回结果,JPA 方法也不返回结果 - JPA method not returning results even though the generated query returns results when used in postgres console 带通配符的准备好的语句不返回某些行,但是查询返回所有行? - Prepared statement with wildcard not returning certain rows but query returns all rows? 当函数不关闭准备好的语句/结果集而返回时,是否很糟糕? - Is it bad when a function returns without closing prepared statement / resultset?
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM