2013-12-21 71 views
0

我想將這些數據保存到oracle數據庫中,但是(成員開始日期和成員結束日期)給出了一個錯誤我正在使用datepicker從JPallet for date和preparedstatemet允許我在pst.setString(6,startdate.getDate ()); int或字符串。請幫我解決這個問題。我會非常感謝你。Oracle preparedstatement

錯誤行:

pst.setString(6, startdate.getDate()); 
    pst.setString(7, enddate.getDate()); 

全部方法:

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {           
    con = javadb.ConnectDb(); 

    try{ 
     String sql = "insert into membertable(id,name,membershipno,department,idno," 
       + "startdate,enddate,officeaddress,officephone,homeaddress,homephone,dateofbirth," 
       + "fieldofinterest,remarks) values(?,?,?,?,?,?,?,?,?,?,?,?,?,?)"; 
     pst = (OraclePreparedStatement) con.prepareStatement(sql); 
     pst.setString(1, null); 
     pst.setString(2, name.getText()); 
     pst.setString(3, membershipno.getText()); 
     pst.setString(4, department.getText()); 
     pst.setString(5, idno.getText()); 
     pst.setString(6, startdate.getDate()); 
     pst.setString(7, enddate.getDate()); 
     pst.setString(8, officeaddress.getText()); 
     pst.setString(9, officephone.getText()); 
     pst.setString(10, homeaddress.getText()); 
     pst.setString(11, homephone.getText()); 
     pst.setString(12, dateofbirth.getText()); 
     pst.setString(13, fieldofinterest.getText()); 
     pst.setString(14, remarks.getText()); 

     pst.executeUpdate(); 

     JOptionPane.showMessageDialog(null, "Book added successfully!"); 

    }catch(SQLException e){ 
     JOptionPane.showMessageDialog(null, e); 
    } 
    update_table(); 

}    

和日期選擇器代碼是在這裏

private void startdateActionPerformed(java.awt.event.ActionEvent evt) {           

}  

這是不是文本字段等於是我面臨的問題。我想糾正,也不想改變它,因爲它是前端需求。因爲用戶不想手動插入日期。謝謝。

+0

你不能只是做一個'setString'如果你的數據庫字段是一個日期。應該有一個類似的'pst.setDate()'方法可以使用。 – Marc

+0

@Marc我正在使用pst.setDATE(7,enddate.getDate());這也給我錯誤,我的數據庫字段是日期。 –

+0

我使用的是JDatePicker,它的formate是Sun 12/22/2013,但不知道oracle的存儲日期格式是什麼。 –

回答

1

插入日期時,請勿使用pst.setString()。相反,你應該使用pst.setDate()(這實際上是首先使用PreparedStatements的全部觀點)。因爲setString正在插入具有某種未知格式的日期字符串。 setDate告訴數據庫預期日期,並且沒有必要的日期格式轉換。

此外,要做到這一點,你需要使用java.sql.Date而不是(我假設你的調色板返回)java.util.Date

所以這

pst.setString(6, startdate.getDate()); 
pst.setString(7, enddate.getDate()); 

應該是這樣的

pst.setDate(6, new java.sql.Date(startdate.getDate().getTime())); 
pst.setDate(7, new java.sql.Date(enddate.getDate().getTime())); 
+1

Man you are good ...其實最好!謝謝......帽子!您真的專注於數據驅動的ERP解決方案。 –

+0

您應該使用'PreparedStatement'中的setter進行探索。像'setInt','setDate'等等。當你插入一個varchar /文本字段時,只能使用'setString'。 – ryvantage