Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java/JDBC/SQLite/BLOB-BLOB的主要缺陷_Java_Sqlite_Jdbc_Blob - Fatal编程技术网

Java/JDBC/SQLite/BLOB-BLOB的主要缺陷

Java/JDBC/SQLite/BLOB-BLOB的主要缺陷,java,sqlite,jdbc,blob,Java,Sqlite,Jdbc,Blob,我在更新SQLite数据库中的数据时遇到了困难。我尝试过使用二进制流,但没有成功。于是我决定,去他妈的。不需要更新Blob,如果我删除了与Blob相关的任何代码(即使在SQL语句中),update语句将不会正确执行。在添加BLOB之前,一切正常。现在我似乎不明白为什么我不能再更新我的数据库了。如果我取出BLOB,程序会说“Employee已成功添加到数据库”,然而,当我查看数据库时,所有信息都是相同的。我可以插入,搜索和删除他们的方法是好的,只是更新似乎不适合我。我想不出该怎么办了,有人能帮我吗

我在更新SQLite数据库中的数据时遇到了困难。我尝试过使用
二进制流
,但没有成功。于是我决定,去他妈的。不需要更新Blob,如果我删除了与Blob相关的任何代码(即使在SQL语句中),update语句将不会正确执行。在添加BLOB之前,一切正常。现在我似乎不明白为什么我不能再更新我的数据库了。如果我取出BLOB,程序会说“Employee已成功添加到数据库”,然而,当我查看数据库时,所有信息都是相同的。我可以插入,搜索和删除他们的方法是好的,只是更新似乎不适合我。我想不出该怎么办了,有人能帮我吗?即使它不更新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!");
                }
            }
        });
谢谢。

整理了这个问题

这是一条线-

 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())用于
其中ID=?


我以前从未遇到过,唉,我要了

您的命令文本有13个参数占位符(
),但您只定义了12个参数。您缺少了最后一个异常,它应该与第一个异常(“ID”)的值相同。

也许您可以打印出实际的异常,而不是出现错误。这可能会让您和我们了解出了什么问题。@Shadow java.lang.NullPointerException<这是个例外。整个过程。@Shadow我需要使用ResultSet吗?@Shadow好的,我已经成功地通过了java.lang.NullPointerException,当语句正确执行时,会出现一个消息框。但是,当查看我的数据库时,数据库中的信息未更新或已更改。可能重复的“是”,解决了问题。我张贴了答案。谢谢你的评论。