Я пытаюсь вставить строку в таблицу, используя JDBC 2.0 в качестве зависимости Spring.Я могу выполнить этот запрос внутри SQL Server 2008 без ошибок.Но когда событие приходит в мое отдельное Java-приложение, и мой запрос создается / выполняется, я получаю неправильную синтаксическую ошибку около '04'.
Столбцы в базе данных: smalldatetime, varchar (50), числовой, числовой, числовой, smalldatetime.
Почему происходит ошибка?
- ОТВЕТ--Читая комментарии ниже, axtavt указал, что ArrayListHandler не нужен.Извлечение этого параметра и только передача строки sql update исправили проблему.
INSERT INTO <My_Table> VALUES (
cast(convert(varchar, '04-26-2011 00:00:00', 106) as datetime),
'ABC',
'-100',
'12.3456',
'12.3456',
cast(convert(varchar, '04-26-2011 00:00:00', 106) as datetime)
)
String timeStamp = padZero(evt.getEventTime().getMonth()) + "-"
+ padZero(evt.getEventTime().getDay()) + "-"
+ evt.getEventTime().getYear() + " "
+ padZero(evt.getEventTime().getHour()) + ":"
+ padZero(evt.getEventTime().getMinute()) + ":"
+ padZero(evt.getEventTime().getSecond());
String sqlText = "cast(convert(varchar, '" + timeStamp + "', 106) as datetime), '" +
VALUE1 + "', '" + VALUE2 + "', '" +
VALUE3 + "', '" +
VALUE4 + "', " +
"cast(convert(varchar, '" + timeStamp + "', 106) as datetime)";
String updateSql = "INSERT INTO <My_Table> VALUES ("
+ sqlText + ")";
if (saveData(updateSql)) {
logger.severe("update successful: " + updateSql);
} else {
logger.severe("update failed: " + updateSql);
}
//insert row into database (commons dbutils 1.3)
private boolean saveData(String sqlQuery) {
QueryRunner qr = new QueryRunner(dataSource);
try {
qr.update(sqlQuery, new ArrayListHandler());
} catch (Exception e) {
e.printStackTrace();
return false;
}
return true;
}