Spring JDBC Неверный синтаксис для INSERT, когда запрос работает в SQL Server 2008 - PullRequest
0 голосов
/ 26 апреля 2011

Я пытаюсь вставить строку в таблицу, используя 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;
    }
...