首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >使用CallableStatement时出现java.sql.sqlexception: Invalid列索引错误

使用CallableStatement时出现java.sql.sqlexception: Invalid列索引错误
EN

Stack Overflow用户
提问于 2018-09-22 03:13:17
回答 2查看 292关注 0票数 1

我正在使用CallableStatement的插入查询。这是我的字符串形式的查询:

代码语言:javascript
复制
String strInsert = "INSERT INTO this_table (loc_nbr, rpt_nbr, rpt_type, office_code, date_submitted, rpt_seq, alcohol, drugs, cyber, priority) VALUES (?, ?, ?, 'HOME', sysdate, ?, ?, ?, ?, ?);";

我使用的CallableStatement是:

代码语言:javascript
复制
CallableStatement cs = Connection.prepareCall(strInsert);
cs.setString(1, "'" + strLocationNumber + "'");
cs.setString(2, "'" + strReportNumber + "'");
cs.setString(3, "'" + strReportType + "'");
cs.setString(6, "'" + strReportSeq + "'");
cs.setString(7, "'" + strAlcohol + "'");
cs.setString(8, "'" + strDrugs + "'");
cs.setString(9, "'" + strCyber + "'");
cs.setString(10, "'" + strPriority + "'");
cs.execute();

在运行此命令时,我会得到一个java.sql.SQLException: Invalid column index

我目前正在使用Oracle作为数据库,我想知道为什么我会收到这个错误。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-22 03:24:03

这表示表结构和insert语句通过Callable在查询中提供的可用列中不匹配

Java包装了这个异常,以便更深入地了解callable/prepared/sql语句。

需要对占位符索引进行校正,检查?,然后像HOME and sysdate一样将硬编码值从中间移到远端,这样占位符索引的连续性就会很好地工作。

代码语言:javascript
复制
String strInsert = "INSERT INTO this_table (loc_nbr, rpt_nbr, rpt_type,  rpt_seq, alcohol, drugs, cyber, priority,office_code,date_submitted) VALUES (?, ?, ?, ?, ?, ?, ?, ?,'HOME', sysdate,);";

CallableStatement cs = Connection.prepareCall(strInsert);
cs.setString(1, "'" + strLocationNumber + "'");
cs.setString(2, "'" + strReportNumber + "'");
cs.setString(3, "'" + strReportType + "'");
cs.setString(4, "'" + strReportSeq + "'");
cs.setString(5, "'" + strAlcohol + "'");
cs.setString(6, "'" + strDrugs + "'");
cs.setString(7, "'" + strCyber + "'");
cs.setString(8, "'" + strPriority + "'");
cs.execute();
票数 4
EN

Stack Overflow用户

发布于 2018-09-22 03:20:19

setString()索引号应该引用?占位符的第n个匹配项。

查询有两个硬编码值

代码语言:javascript
复制
'HOME', sysdate

它们不会计入占位符索引。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52449857

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档