PreparedStatement没有为参数一指定的值

时间:2011-10-08 07:37:34

标签: java mysql prepared-statement

有这个问题需要设置的是一个自动增量整数,那我该如何指定

PreparedStatement stmt = conn.prepareStatement("INSERT INTO `"+OnlineUsers.table2+"` VALUES (?,?,?)");

//What I do here
stmt.setInt(2, currentonline);
stmt.setDate(3, new java.sql.Date(b.getTime()));
stmt.execute();

1 个答案:

答案 0 :(得分:2)

最好明确指定列名:

"INSERT INTO `" + OnlineUsers.table2 + "` (col2, col3) VALUES (?,?)"

然后:

stmt.setInt(1, currentonline);
stmt.setDate(2, new java.sql.Date(b.getTime()));

这将使您的代码对数据库中更改的列的顺序具有鲁棒性。

注意:如果OnlineUsers.table2来自不受信任的来源,则应验证此字符串,否则您可能会面临SQL注入攻击的风险。