使用java1001插入数据库
每次尝试保存或执行查询时,我都会遇到此错误。 我想不出来,也许一点建议会有帮助 java.sql.SQLException:无法使用 executeQuery() 这是我插入数据库的代码使用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()
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();