Невозможно вставить строку в Oracle с Java (JDBC) -> ошибка ORA-00917: отсутствует запятая - PullRequest
1 голос
/ 31 марта 2011

У меня проблема во время вставки в Oracle с использованием Java и JDBC. Полученная ошибка:

java.sql.SQLException: ORA-00917: пропущенная запятая

Данные для вставки берутся из формы, подобной строке, анализируются в соответствующий тип данных и затем сохраняются в объекте, называемом edicio. Это все хорошо. Затем я собираюсь вставить в БД данные этого объекта.

Вот код DAO, где я делаю вставку:

public Edicio insertarCurs(Connection con, Edicio ed) throws SQLException {
    PreparedStatement stm = null;
    ResultSet rst = null;

    // Insert
    StringBuffer sql = new StringBuffer();
    sql.append("INSERT INTO curs (id, nom, idarea, area, programa, datainici)");
    sql.append(" VALUES (?, ?, ?, ?, ?, ?");
    logger.info("Building insert works fine.");

    try {
        stm = con.prepareStatement(sql.toString());
        // params
        stm.setLong(1, ed.getIdEdicio());
        stm.setString(2, ed.getNomEdicio());
        stm.setLong(3, ed.getIdArea());
        stm.setString(4, ed.getArea());
        stm.setString(5, ed.getPrograma());
        // Conversion from Java Date to SQL Date
        java.sql.Date sqlDate = new java.sql.Date(ed.getDataInici().getTime());
        logger.info("sqlDate before the insert is: "+ sqlDate); //0011-12-02
        stm.setDate(6, sqlDate);

                // Data and results commented
        logger.info("Id edicio: "+ ed.getIdEdicio()); //6
        logger.info("Nom edicio: "+ ed.getNomEdicio()); //test
        logger.info("Id area: "+ ed.getIdArea()); //0
        logger.info("Nom area: "+ ed.getArea()); //test
        logger.info("Programa: "+ ed.getPrograma()); //test
        logger.info("Data inici: "+ sqlDate); //2011-06-06

        // We are going to execute the insert
        int numRows = stm.executeUpdate();
        // The program never reaches this point, fails doing the executeUpdate()
                logger.info("Rows created: "+ numFiles);
                ...

Типы переменных:

idEdicio = long  
nomEdicio = String  
idArea = long  
area = String  
programa = String  
dataInici = Date  

Может кто-нибудь мне помочь? Заранее спасибо:)

Ответы [ 2 ]

6 голосов
/ 31 марта 2011

Отсутствует )

sql.append(" VALUES (?, ?, ?, ?, ?, ?");

должно быть

sql.append(" VALUES (?, ?, ?, ?, ?, ?)");
5 голосов
/ 31 марта 2011
sql.append(" VALUES (?, ?, ?, ?, ?, ?)");
                                     ^--- missing parenthesis
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...