BLOB 업데이트에 문제가 있습니다. BLOB/Tryinng과 관련된 모든 항목을 업데이트하려면 BLOB/Tryinng과 관련된 모든 것을 꺼내면 실행하지 않는 것이 pst.executeUpdate
입니다. Blob은 ID, 이름, 주소 등 모든 것을 업데이트합니다. 모든 기능이 있어야합니다. 문제는 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);
int idVal = Integer.parseInt(idTextField.getText());
String nameVal= nameTextField.getText();
String genderVal = genderTextField.getText();
String dobVal = dobTextField.getText();
String addressVal = addressTextField.getText();
String postcodeVal = postcodeTextField.getText();
String ninVal = ninTextField.getText();
String jobVal = jobtitleTextField.getText();
String startDateVal = startdateTextField.getText();
String salaryVal = salaryTextField.getText();
String emailVal = emailTextField.getText();
//Icon photoBlob = photoLabel.getIcon();
InputStream img = new FileInputStream(s);
String sql = "UPDATE employees set ID= '"+ idVal+"', Name = '"+ nameVal +"', Gender ='"+ genderVal+"', DOB='"+ dobVal+"', Address ='"+ addressVal+"', Postcode ='"+ postcodeVal+"', NIN ='"+ ninVal+"', JobTitle='"+ jobVal+"', StartDate ='"+ startDateVal+"', Salary ='"+ salaryVal+"', Email='"+ emailVal+"', Images='"+ img+" WHERE ID= '"+ idVal+"'";
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(9, startdateTextField.getText());
pst.setString(10, salaryTextField.getText());
pst.setString(11, emailTextField.getText());
pst.setBytes(12, readFile(s));
pst.executeUpdate();
System.out.println("Employee Updated");
JOptionPane.showMessageDialog(null, "Employee has successfully been updated");
connection.commit();
pst.close();
connection.close();
}
catch (Exception e1) {
if(idTextField.getText().equals("")){
JOptionPane.showMessageDialog(null, "Please Ensure An Employee Has Been Selected");
}
}
}});
편집 -
나는 그러나, 삽입 및 BLOB 파일을 삭제뿐만 아니라 검색 할 수 있습니다. 이 업데이트만으로도 나에게 문제가되고있다.
가, 다시 리드 SQL 문으로 어떤 상황의 CONCATENATE 매개 변수 값에 따라 않도록하세요 SQL 주입 공격. 그것을 읽고 PreparedStatement와 setParameter를 사용하십시오. 언젠가는 제 신용 카드 나 암호를 해킹하는 것에 대한 책임을지지 않습니다. –
@ TonyBenBrahim 그렇다면 ..... – TheNotoriousCoder