2016-12-21 2 views
-1

SQLite 데이터베이스 내에서 데이터를 업데이트하는 데 어려움을 겪고 있습니다. 그러나 BinaryStream 행운을 사용해 보았습니다. 그래서 나는 그것을 결정했다. Blob을 업데이트 할 필요가 없습니다. BLOB와 관련된 코드 (SQL 문에서도)를 삭제하면 Update 문이 (제대로) 실행되지 않습니다. BLOB를 추가하기 전에는 모든 것이 잘 동작했습니다. 이제 왜 데이터베이스를 더 이상 업데이트 할 수 없는지 이해할 수없는 것 같습니다. BLOB을 꺼내면 "직원이 데이터베이스에 성공적으로 추가되었습니다"라는 메시지가 나타납니다. 그러나 데이터베이스를 보면 모든 정보가 동일합니다. 내가 삽입, 검색 및 삭제 방법은 괜찮아요, 그냥 업데이 트가 나를 위해 일하는 것 같지 않습니다. 나는 무엇을 해야할지에 대한 아이디어가 부족합니다. 누군가 나를 도울 수 있습니까? BLOB를 업데이트하지 않더라도이 속도로 무엇이든 할게요. 업데이트 또는 업데이트 없음.Java/JDBC/SQLite/BLOB - 주요 결함 (블롭 포함)

코드 -

updateEmployee.addActionListener(new ActionListener() { 

    @Override 
     public void actionPerformed(ActionEvent e) { 
      // TODO Auto-generated method stub 
      Connection connection = null; 
      PreparedStatement pst = null; 

      try { 

       Class.forName("org.sqlite.JDBC"); 
       connection = DriverManager.getConnection("jdbc:sqlite:employeeDatabase.sqlite"); 
       connection.setAutoCommit(false); 

       String sql = "UPDATE employees SET ID =?, Name=?, Gender=?, DOB=?, Address=?, Postcode=?, NIN=?, JobTitle=?, StartDate=?, Salary=?, Email=?, Images=? WHERE ID=?"; 
        pst = connection.prepareStatement(sql); 

       pst.setInt(1,Integer.parseInt(idTextField.getText())); 
       pst.setString(2, nameTextField.getText()); 
       pst.setString(3, genderTextField.getText()); 
       pst.setString(4, dobTextField.getText()); 
       pst.setString(5, addressTextField.getText()); 
       pst.setString(6, postcodeTextField.getText()); 
       pst.setString(7, ninTextField.getText()); 
       pst.setString(8, jobtitleTextField.getText()); 
       pst.setString(9, startdateTextField.getText()); 
       pst.setString(10, salaryTextField.getText()); 
       pst.setString(11, emailTextField.getText()); 
       pst.setBytes(12, readFile(s)); 

       pst.executeUpdate(); 

       System.out.println("EmployeeAdded"); 
       JOptionPane.showMessageDialog(null, "Employee has successfully added to the database");    


       connection.commit(); 
       pst.close(); 
       connection.close(); 
      } 
      catch (Exception e1) { 


        JOptionPane.showMessageDialog(null, "Uh oh! Something went wrong!"); 
       } 
      } 
     }); 

감사합니다.

+0

아마 뭔가 잘못 된 것이 아니라 실제 예외를 인쇄 할 수 있습니다. 그것은 당신과 우리에게 잘못된 점을 알릴 수 있습니다. – Shadow

+0

@Shadow java.lang.NullPointerException <예외입니다. 그것 전부. – TheNotoriousCoder

+0

@Shadow ResultSet을 사용해야합니까? – TheNotoriousCoder

답변

0

문제를 분류했습니다.

내가 WHERE ID=?에 대한 pst.setInt(12,Integer.parseInt(idTextField.getText()));을 추가하는 데 필요한 라인 -

String sql = "UPDATE employees SET ID =?, Name=?, Gender=?, DOB=?, Address=?, Postcode=?, NIN=?, JobTitle=?, StartDate=?, Salary=?, Email=?, Images=? WHERE ID=?"; 

로했다.

나는 결코 전에 나에게 일어났다. 아아, 내가 가져갈 것이다.

0

명령 텍스트에는 13 개의 매개 변수 자리 표시 자 (?)가 있지만 12 개의 매개 변수 만 정의하고 있습니다. 마지막 하나가 누락되었습니다. 첫 번째 ID ("ID")와 동일한 값이어야합니다.

+0

예, 문제가 정렬되었습니다. 나는 대답을 게시했다. 댓글 주셔서 감사합니다. – TheNotoriousCoder