Строковые значения должны быть заключены в строку SQL.Но лучше использовать PreparedStatement
.Тогда вам не нужно ни цитировать значения, ни спасаться от атак SQL-инъекций .
String sql = "INSERT INTO logfile VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?)";
preparedStatement = connection.prepareStatement(sql);
preparedStatement.setInt(1, logMessage.getCreator());
preparedStatement.setInt(2, logMessage.getCreatorParent());
preparedStatement.setInt(3, logMessage.getSequenceNumber());
preparedStatement.setInt(4, logMessage.getCreatorCost());
preparedStatement.setInt(5, logMessage.getCreatorEnergy());
preparedStatement.setInt(6, interval);
preparedStatement.setInt(7, lplinterval);
preparedStatement.setInt(8, logMessage.getData());
preparedStatement.setTimestamp(9, new Timestamp(tmp2.getTime())); // Assuming tmp2 is java.util.Date.
preparedStatement.executeQuery();
(и работать над вашими соглашениями по кодированию ,у вас это довольно ужасно, также не забывайте правильно закрывать ресурсы JDBC, вы, похоже, тоже это не учитываете)
Обновление : каксогласно комментариям tmp2
является String
.Вот как вы можете преобразовать его в Date
, чтобы использовать его в setTimestamp()
, чтобы значение было должным образом сохранено в столбце типа DATETIME
.Поскольку вы не упомянули, в каком формате даты находится tmp2
, я просто возьму "yyyy-MM-dd HH:mm:ss"
в качестве примера:
String datestring = "2011-05-19 12:34:56"; // Just an example.
Date date = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").parse(datestring);
Timestamp timestamp = new Timestamp(date.getTime());
// Store in SQL string by PreparedStatement#setTimestamp().