我在java中做一个单独的项目。我想将数据插入我的数据库...但我的程序成功运行没有任何错误但是当插入数据并提交我的数据时,它会给出一个错误,如java.sql.SQLException:无法使用executeQuery发出数据操作语句()。这个我的代码: 什么可以解决这个问题
private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {
if (evt.getSource() == jButton1)``
{
int x = 0;
String s1 = jTextField1.getText().trim();
String s2 = jTextField2.getText();
char[] s3 = jPasswordField1.getPassword();
char[] s4 = jPasswordField2.getPassword();
String s8 = new String(s3);
String s9 = new String(s4);
String s5 = jTextField5.getText();
String s6 = jTextField6.getText();
String s7 = jTextField7.getText();
if(s8.equals(s9))
{
try{
File image = new File(filename);
FileInputStream fis = new FileInputStream(image);
ByteArrayOutputStream bos = new ByteArrayOutputStream();
byte buf[] = new byte[1024];
for (int readNum; (readNum = fis.read(buf)) != -1;) {
bos.write(buf, 0, readNum);
}
cat_image = bos.toByteArray();
PreparedStatement ps = conn.prepareStatement("insert into reg values(?,?,?,?,?,?,?)");
ps.setString(1,s1);
ps.setString(2,s2);
ps.setString(3,s8);
ps.setString(4,s5);
ps.setString(5,s6);
ps.setString(6,s7);
ps.setBytes(7,cat_image);
rs = ps.executeQuery();
if(rs.next())
{
JOptionPane.showMessageDialog(null,"Data insert Succesfully");
}else
{
JOptionPane.showMessageDialog(null,"Your Password Dosn't match" ,"Acces dinied",JOptionPane.ERROR_MESSAGE);
}
}catch(Exception e)
{
System.out.println(e);
}
}
答案 0 :(得分:1)
使用ps.executeUpdate()
或ps.execute()
。
在此PreparedStatement对象中执行SQL语句,该对象必须是SQL数据操作语言(DML)语句,例如 INSERT ,UPDATE或DELETE;或者什么都不返回的SQL语句, 例如DDL声明。
来自execute
执行此PreparedStatement对象中的SQL语句 可以是任何类型的SQL语句。一些准备好的陈述归来 多重结果; execute方法处理这些复杂的语句 以及方法处理的简单形式的语句 executeQuery和executeUpdate。execute方法返回一个布尔值 表示第一个结果的形式。你必须调用该方法 getResultSet或getUpdateCount来检索结果;你必须打电话 getMoreResults移动到任何后续结果。
然后正确修改您的代码
int rowsAffected = ps.executeUpdate();
JOptionPane.showMessageDialog(null,"Data Rows Inserted "+ rowsAffected);
此外,您必须在finally块中关闭流和连接。
答案 1 :(得分:0)
由于错误的sql语句而抛出SQLException。插入字符串和整数值时可能会出现语法错误。在VALUES之后检查你的sql语句应该有" 1-0"围绕整数元素和""某些值"'围绕字符串元素。