我正在尝试使用来自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数据库中的表的正确方法是什么?
答案 0 :(得分: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
处开始索引,并达到您拥有的占位符数量。