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