Получение ошибки при выполнении Дао - PullRequest
0 голосов
/ 03 марта 2010

Привет, друзья! Я запускаю приведенный ниже код, который содержит функцию setLogTimeEntery, и когда эта функция выполняется, я получаю

"Ошибка: java.sql.SQLException: ORA-00917: пропущена запятая"

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

public int setLogTimeEntery(Connection con, LogTimeBean ltb) {

int ans = 0;

    try{
        psmt=con.prepareStatement("Insert into TR_LogTime values((Select count(*) from Tr_LogTime) + 1 ,(select sysdate from dual) , Prj_Id=?,Area_Id=?,Actvity_Id=?,ID_No=?,Work_Date=(select to_date(?,'dd/mm/yyyy')from dual) ,Work_Hours=?,Division=?,Description=?,Remarks=?,Work_Week=?)");
        psmt.clearParameters();
        psmt.setString(1,ltb.getLt_Prj_Id());
        psmt.setInt(2,ltb.getLt_Area_Id());
        psmt.setInt(3,ltb.getLt_Actvity_Id());
        psmt.setInt(4, ltb.getLt_ID_No());
        psmt.setString(5, ltb.getLt_Work_Date());
        psmt.setFloat(6,ltb.getLt_Work_Hours());
        psmt.setInt(7,ltb.getLt_Division());
        psmt.setString(8, ltb.getLt_Description());
        psmt.setString(9, ltb.getLt_Remarks());
        psmt.setInt(10, ltb.getLt_Work_Week());
        ans=psmt.executeUpdate();
        psmt.close();
    }catch(Exception e){
        System.err.println("Error : "+e);
    }
    return ans;
}

Ответы [ 2 ]

1 голос
/ 03 марта 2010

Я не думаю, что ваш оператор Oracle SQL (как определено в подготовленном операторе) является допустимым. При использовании синтаксиса insert into [table] values(...) вы не используете выражения column=value.

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

psmt=con.prepareStatement("Insert into TR_LogTime values((Select count(*) from Tr_LogTime) + 1 ,(select sysdate from dual), ?, ?, ?, ?,(select to_date(?,'dd/mm/yyyy')from dual) ,?,?,?,?,?)");

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

insert into TR_LogTime (col1, col2, col3, ...) values (?, ?, ?, ...)

(я не указал точные имена столбцов в вашем примере, так как не знаю их всех)

Подробнее об этом синтаксисе .

0 голосов
/ 03 марта 2010

попробуйте это:

Insert into TR_LogTime (XXX, YYY, Prj_Id, Area_id, Activity_Id, ID_No, Work_Date, Work_Hours, Division, Description, Remarks, Work_Week) values (
(Select count(*) from Tr_LogTime) + 1 , (select sysdate from dual) , ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)

Вам необходимо заменить XXX и YYY на соответствующие имена столбцов

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