我想用 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 出现错误 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

我想用一条SQL给一个表中添加1000条数据,怎么写这样的SQL

表 'users' 超出 Oracle 空间配额

生成.txt文件并插入到oracle表pl/sql中

如何使用java代码向oracle数据库一次性插入多条数据

从java中的对象表中检索结构类型

oracle中,查询结果去除重复列,插入到新表中