我在设置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无效列索引
我真的很难过。知道这里的罪魁祸首是什么?
答案 0 :(得分:1)
两个猜测:
TIMESTAMP
功能可能有问题。尝试将日期转换为时间戳,然后在预准备语句中进行设置。 (date.getTime() / 1000
)答案 1 :(得分:1)
您的SQL语句只有一个可替换的占位符。单引号中的那些是文字问号。