PreparedStatement Для первого параметра не указано значение - PullRequest
2 голосов
/ 08 октября 2011

Имея проблемы с этим, тот, который должен быть установлен, является целым числом с автоинкрементом, так как бы я указал, что

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 Ответ

2 голосов
/ 08 октября 2011

Лучше указывать имена столбцов в явном виде:

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

Тогда:

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

Это сделает ваш код устойчивым к порядку изменения столбцов в базе данных.

Примечание : Если OnlineUsers.table2 поступает из ненадежного источника, вам следует проверить эту строку, в противном случае вы можете подвергнуться риску атаки SQL-инъекцией.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...