【发布时间】:2017-05-07 10:30:26
【问题描述】:
我很难更新我的 SQLite 数据库中的数据。我曾尝试使用BinaryStream,但没有运气。于是我决定,搞砸了。无需更新 Blob,如果我删除与 BLOB 相关的任何代码(即使在 SQL 语句中),Update 语句也不会(正确)执行。在添加 BLOB 之前一切正常。现在我似乎无法理解为什么我不能再更新我的数据库了。如果我取出 BLOB,程序会说“员工已成功添加到数据库”但是,当我查看我的数据库时,所有信息都是相同的。我可以插入、搜索和删除它们,方法很好,只是更新似乎对我不起作用。我对该怎么做没有想法,有人可以帮助我吗?即使它不更新 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!");
}
}
});
谢谢。
【问题讨论】:
-
也许您可以打印出实际的异常而不是出现问题。这可能会让您和我们知道出了什么问题。
-
@Shadow java.lang.NullPointerException
-
@Shadow 我需要使用 ResultSet 吗?
-
@Shadow 好的,我已经设法克服了 java.lang.NullPointerException,并且当语句正确执行时会出现一个消息框。但是,在查看我的数据库时,数据库中的信息并未更新或已更改。