Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/310.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
使用java1001插入数据库_Java_Sql_Methods - Fatal编程技术网

使用java1001插入数据库

使用java1001插入数据库,java,sql,methods,Java,Sql,Methods,每次尝试保存或执行查询时,我都会遇到此错误。 我想不出来,也许一点建议会有帮助 java.sql.SQLException:无法使用 executeQuery() 这是我插入数据库的代码 Connection conn=null; ResultSet rs = null,rs1=null; PreparedStatement pst = null,pst1=null; DefaultTableModel model= (DefaultTableModel)tbl_stud.getModel()

每次尝试保存或执行查询时,我都会遇到此错误。 我想不出来,也许一点建议会有帮助

java.sql.SQLException:无法使用 executeQuery()

这是我插入数据库的代码

Connection conn=null; ResultSet rs = null,rs1=null; PreparedStatement
pst = null,pst1=null;

DefaultTableModel model= (DefaultTableModel)tbl_stud.getModel();



    try{
       String sql="INSERT INTO students (id_num,fname,mname,lname,course,gender,year,username,password) VALUES(?,?,?,?,?,?,?,?,?);"; 
        model.setNumRows(0);
        pst=conn.prepareStatement(sql);   
         String id=txt_idnum.getText();
        pst.setString(1,id);
        String f=txt_fname.getText();
        pst.setString(2, f);
        String m=txt_mname.getText();
        pst.setString(3, m);
        String l=txt_lname.getText();
        pst.setString(4, l);
        String crs=cmb_course.getSelectedItem().toString();
        pst.setString(5, crs);
         String gen=cmb_gender.getSelectedItem().toString();
        pst.setString(6, gen);
         String year = cmb_year.getSelectedItem().toString();
        pst.setString(7, year);
        String uname=txt_username.getText();
        pst.setString(8, uname);
        String pass=txt_password.getText();
        pst.setString(9, pass);

        pst.executeQuery(sql);


    JOptionPane.showMessageDialog(null, "Saved!","",JOptionPane.INFORMATION_MESSAGE);


    }
    catch(Exception e){
         JOptionPane.showMessageDialog(null, e,"",JOptionPane.ERROR_MESSAGE);
    }

您需要使用pst.executeUpdate,而不是pst.executeQuery

异常消息说明了一切:

无法使用executeQuery()发出数据操作语句

相反,您应该使用
executeUpdate()
。此外,如果您已经准备好了语句,那么应该使用不接收字符串参数的execute变量。这些代码继承自
语句
,不应与
PreparedStatement
s一起使用(是的,这在很大程度上说明了JDBC是一个糟糕的API)


作为附加说明,您应该删除分号(
)和insert语句的结尾。根据您使用的确切驱动程序和RDBMS,它可能是多余的,也可能是完全错误的。

谢谢。但我在修改后出现了这个错误:“您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以了解在'?,,,,,,,,,,,,,,'附近使用的正确语法,请尝试省略分号SQL=“INSERT INTO students(id_num,fname,mname,lname,course,gender,year,username,password)值(?,,,,,,,,,,,,,?)"; 我一直在试那个密码,但我不确定。任何值都可以为空吗?在这种情况下,您可能需要使用setNull类型。
pst.executeUpdate();