2013-12-21 2 views
0

이 데이터를 oracle datebase에 저장하려고하는데 (Member start date와 Member end date) 오류가 있습니다. date 용 JPallet에서 datepicker를 사용하고 preparedstatemet을 사용하면 pst.setString (6, startdate.getDate()); int 또는 string. 이 문제를 해결할 수 있도록 도와주세요. 나는 너에게 고맙게 여길 것이다.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

처럼 보일 것입니다. 사용할 수있는 유사한'pst.setDate()'메소드가 있어야합니다. – Marc

+0

@Marc pst.setDATE (7, enddate.getDate());를 사용하고 있습니다. 그리고 이것은 또한 나에게 오류를주고 내 DB 필드는 날짜입니다. –

+0

JDatePicker를 사용 중이며 2014 년 12 월 22 일 일이지만, 날짜 저장을위한 Oracle 형식이 무엇인지 알지 못합니다. –

답변

1

날짜를 삽입 할 때 pst.setString()을 사용하지 마십시오. 대신 pst.setDate()을 사용해야합니다 (처음에는 PreparedStatements을 사용하는 전체 요점입니다). setString은 알 수없는 형식의 날짜 문자열을 삽입하기 때문에 setDate은 데이터베이스에 날짜를 알리며 날짜 형식 변환이 필요하지 않습니다.

또한이 작업을 수행하려면 java.util.Date 대신에 java.sql.Date 대신 (팔레트가 반환하는 것으로 가정) 값을 사용해야합니다. 당신의 DB 필드가 날짜 인 경우

그래서이

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

당신은 단지`setString`을 할 수없는이

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

남자는 당신이 좋다 ... 실제로 최고! 고마워 ... 모자 벗어! 귀하는 실제로 데이터 중심 ERP 솔루션을 전문으로합니다. –

+0

'PreparedStatement'에서 세터와 함께 탐구해야합니다. 'setInt','setDate'와 같습니다. varchar/text 필드에 삽입 할 때만'setString'을 사용하십시오. – ryvantage