2010-03-03 63 views
0

朋友你好我運行下面其中包含setLogTimeEntery功能,並執行該功能時,我得到得到錯誤而執行DAO

定的代碼「錯誤:值java.sql.SQLException:ORA-00917:缺少逗號」

錯誤和我的數據庫是甲骨文plese任何一個告訴我,這是什麼問題。

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; 
} 

回答

1

我不認爲您的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 (?, ?, ?, ...) 

(我沒有在你的榜樣指定確切的列名,因爲我不知道所有的人)

More on this syntax

0

試試這個:

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