gpt4 book ai didi

java - 即使在蟾蜍中运行时相同的查询返回一行,准备好的语句也不起作用

转载 作者:行者123 更新时间:2023-12-01 15:29:36 27 4
gpt4 key购买 nike

我正在尝试使用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'));

可能会起作用。

关于java - 即使在蟾蜍中运行时相同的查询返回一行,准备好的语句也不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9717597/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com