0

我正在尝试使用来自 Eclipse 的 jdbc:odbc 连接将数据插入 MS Access 数据库。我收到一条错误消息,指出:

java.lang.ArrayIndexOutOfBoundsException 4  

我很确定问题是我正在跳过基础表中的自动编号字段(第一个索引)。我想我应该跳过它,因为 Access 会填充它。因此,如果基础表有 5 个字段,我将创建以下带有四个 ? 的preparedStatement,尝试引用字段 2、3、4 和 5。

PreparedStatement ps = con.prepareStatement("INSERT INTO someTable VALUES (?, ?, ?, ?");  
//code then populates each field, starting with index 2
ps.setString(2,"Thunder");
//...

我的方法似乎是错误的。但是,添加额外的 ? 似乎会产生其他问题。当表具有自动编号主键作为其第一个字段时,将 INSERT 语句写入 MS Access 数据库中的表的正确方法是什么?

4

1 回答 1

3

SQL 字符串中占位符的索引?独立于表中的列声明

PreparedStatement ps = con.prepareStatement("INSERT INTO someTable VALUES (?, ?, ?, ?");  

你需要从1到4。

如果您希望它们与列匹配,则需要指定它们的名称

PreparedStatement ps = con.prepareStatement("INSERT INTO someTable (col1, col2, col3, col4) VALUES (?, ?, ?, ?");  

您再次需要使用 1 到 4 作为索引,但现在您可以指定实际使用的列。

如果你想跳过第一列,因为它是auto_increment,你可以这样做,但你仍然需要从你的索引开始1并上升到你拥有的占位符的数量。

于 2013-10-07T21:24:05.180 回答