“无效的列索引”尝试插入行时出现SqlException错误

时间:2012-03-13 20:56:19

标签: java sql oracle jdbc prepared-statement

我在设置PreparedStatement以在表格中插入新行时遇到问题。我已经在我的SQL编辑器中测试了查询,并且它成功运行但我无法使这个PreparedStatement工作。

String sql = "INSERT INTO table game(gamedate, type, world) values (TIMESTAMP '?', ?, '?');"
runQuery(sql, date, type, world); 

...

protected runQuery(String sql, Object... params){
try {
  initiateConnection();
  PreparedStatement statement = connection.PrepareStatement(sql);

    int i = 1;
    for (Object p : params){
       statement.setObject(i, p);
       i++;
     }
   statement.executeUpdate();
} catch (Exception ex){

} finally {
 //close up things
}
}

我添加了一些println()来测试输出,看起来一切都很好

sql: INSERT INTO game(gamedate, type, world) values(TIMESTAMP '?', ?, '?');
date: 2012-03-13 21:42:14
type: 1
world: test

我得到的错误是

  

java.sql.SQLException无效列索引

我真的很难过。知道这里的罪魁祸首是什么?

2 个答案:

答案 0 :(得分:1)

两个猜测:

  • 你不需要在问号周围加引号。摆脱那些
  • TIMESTAMP功能可能有问题。尝试将日期转换为时间戳,然后在预准备语句中进行设置。 (date.getTime() / 1000

答案 1 :(得分:1)

您的SQL语句只有一个可替换的占位符。单引号中的那些是文字问号。

相关问题