错误java.sql.SQLException:未由SQLite JDBC驱动程序实现

时间:2018-02-02 03:29:01

标签: java

这段代码有什么问题?当我运行这个文件时,它说错误java.sql.SQLException:没有由SQLite JDBC驱动程序实现

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
    try{
        String url="INSERT INTO com_details( com_id ,com_name,com_add,com_phone_1,com_phone_2,com_email ) VALUES (?,?,?,?,?,?)";
        Class.forName("org.sqlite.JDBC");
        conn=DriverManager.getConnection("jdbc:sqlite:C:\\refbill\\billing_system.db");
        pst=conn.prepareStatement(url);
        pst.setString(1,txtComId.getText());
        pst.setString(1,txtComName.getText());
        pst.setString(1,txtComAdd.getText());
        pst.setString(1,txtComPhoneNo1.getText());
        pst.setString(1,txtComPhoneNo2.getText());
        pst.setString(1,txtComEmail.getText());
        pst.executeUpdate(url);

    }catch (SQLException  | HeadlessException ex) {
        JOptionPane.showMessageDialog(null, ex);
    } catch (ClassNotFoundException ex) {
        Logger.getLogger(addcom.class.getName()).log(Level.SEVERE, null, ex);
    }
}   

1 个答案:

答案 0 :(得分:2)

此代码存在一些问题。

  1. 您应该致电executeUpdate(),而不是executeUpdate(url)。这是一个PreparedStatement。它已经知道SQL是什么,因为你在创建时提供了它。如果您致电executeUpdate(String),则无法理解问号。
  2. 您需要设置所有六个参数值。目前你正在设置第一个六次。
  3. connpst都应该是局部变量,使用的ResultSet变量也应如此。否则代码不是线程安全的。
  4. SQLLite错误消息引用(1)。这是一个非常糟糕的努力。它应该说“预备语句中缺少值#1”或“......语法错误”。