gpt4 book ai didi

java - 使用Java的PreparedStatement进行选择查询时出现SQL异常

转载 作者:行者123 更新时间:2023-12-01 20:52:21 25 4
gpt4 key购买 nike

我已通过复制粘贴手动输入查询,并且运行良好。当我将查询放入PreparedStatement 对象时,出现错误:

com.ibm.db2.jcc.am.SqlSyntaxErrorException:[jcc][10145][10844][4.22.29] 无效参数 1:参数索引超出范围。错误代码=-4461,SQLSTATE=42815

我已经阅读了有关PreparedStatement 对象的JavaDoc,但还没有什么想法。我的其他相同的查询(但使用 int 而不是 String)工作正常。有什么想法吗?

代码片段:

      String queryText = "";
PreparedStatement querySt = null;
ResultSet answers = null;


queryText = "SELECT title, year, language, weight FROM yrb_book WHERE title = '?' AND cat = '?' ";

try
{
querySt = DbConn.prepareStatement(queryText);
}
catch(SQLException e)
{
System.out.println(e);
System.exit(0);
}

// Execute the query.
try
{
querySt.setString(1, title);
querySt.setString(2, category);
answers = querySt.executeQuery();
}

下面是我正在使用的表格:创建表 yrb_book (
标题 varchar(25) 不为空,
年 Smallint 不为空,
语言 varchar(10),
猫 varchar(10) 不为空,
权重smallint不为空,
约束 yrb_book_pk
主键(标题、年份),
约束 yrb_book_fk_cat
外键 (cat) 引用 yrb_category,
约束 yrb_book_weight
检查(重量 > 0)
);

我研究了这个答案 30 分钟,但不明白它如何应用于我的案例。 Getting SQL Exception while using prepared statement for select query

最佳答案

不要对标记“?”使用引号(单引号和双引号)。而不是:

queryText = "SELECT title, year, language, weight FROM yrb_book WHERE title = '?' AND cat = '?' ";

用途:

queryText = "SELECT title, year, language, weight FROM yrb_book WHERE title = ? AND cat = ? ";

关于java - 使用Java的PreparedStatement进行选择查询时出现SQL异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43024720/

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