簡體   English   中英

即使在蟾蜍中運行相同查詢時,即使同一查詢返回一行,Prepared Statement也無法正常工作

[英]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'

zZ

您無需在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM