我在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!");
}
}
});
谢谢。
答案 0 :(得分:0)
对问题进行排序。
这是行 -
String sql = "UPDATE employees SET ID =?, Name=?, Gender=?, DOB=?, Address=?, Postcode=?, NIN=?, JobTitle=?, StartDate=?, Salary=?, Email=?, Images=? WHERE ID=?";
我需要为pst.setInt(12,Integer.parseInt(idTextField.getText()));
添加WHERE ID=?
。
之前从来没有发生在我身上,唉,我会接受它。
答案 1 :(得分:0)
您的命令文本有13个参数占位符(?
),但您只定义了12个参数。你错过了最后一个,它应该与第一个相同(“ID”)。