我想用 Java 代码插入 Oracle 表,但 PreparedStatement 出现错误 [重复]
Posted
技术标签:
【中文标题】我想用 Java 代码插入 Oracle 表,但 PreparedStatement 出现错误 [重复]【英文标题】:I want to insert in a Oracle table with Java code and I get error on PreparedStatement [duplicate] 【发布时间】:2019-10-17 08:48:03 【问题描述】:我想在表格中插入一行,我正在执行 PreparedStatement 并不断收到此错误:
java.sql.SQLException:列索引无效
这是代码:
这个准备好的语句有什么问题?
String sql = "INSERT INTO ASIST_EMAIL (NUME, CNPCUI, LOCALITATEA, STRADA, NUMAR, BLOC, SCARA, APARTAMENT, JUDET, EMAIL, TEXTINTREBARE, CATEGCONTRIB, SECVENTA, DATA_EMAIL, CATEGSOLICIT, NUMEFISIER, ARONDARE, DOMFISCAL, SUBCATEGSOLICIT, TIPINTRARE, STARE, CODCATEG, CODSUBCATEG, HOST, AJCODSOC, AJCAEN, AJPERSCONTACT, DENREG) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setString(0, "test");
ps.setInt(1, 999);
ps.setString(2, "xxx");
ps.setString(3, "xxx");
ps.setString(4, "xxx");
ps.setString(5, "xxx");
ps.setString(6, "xxx");
ps.setString(7, "xxx");
ps.setString(8, "xxx");
ps.setString(9, "xxx");
ps.setString(10, "xxx");
ps.setString(11, "xxx");
ps.setInt(12, 999);
ps.setTimestamp(13, new java.sql.Timestamp(System.currentTimeMillis()));
ps.setString(14, "xxx");
ps.setString(15, "xxx");
ps.setString(16, "xxx");
ps.setString(17, "xxx");
ps.setString(18, "xxx");
ps.setInt(19, 99);
ps.setInt(20, 9);
ps.setInt(21, 999);
ps.setInt(22, 999);
ps.setString(23, "xxx");
ps.setInt(24, 9);
ps.setInt(25, 9999);
ps.setString(26, "xxx");
ps.setString(27, "xxx");
ps.executeUpdate();
【问题讨论】:
步骤 1) 尽可能简化。 (minimal reproducible example) ps.setXXX 方法的第一个索引应该是1
。
【参考方案1】:
你在 setter 中有一个错误的索引,来自javadoc:
parameterIndex - 第一个参数是1,第二个是2,...
附:而且 - 这么大的要求很难阅读。
【讨论】:
以上是关于我想用 Java 代码插入 Oracle 表,但 PreparedStatement 出现错误 [重复]的主要内容,如果未能解决你的问题,请参考以下文章