一.概述:
executeQuery()和executeUpdate()都是JDBC的方法,用于执行SQL语句。
二.区别:
1.executeQuery()方法用于执行select查询语句,它返回一个ResultSet对象,该对象包含与查询语句匹配的所有行。ResultSet对象可以用于遍历和访问查询结果。
例如:
static ResultSet rs=null;
static PreparedStatement pst=null;
//------------遍历学生数据库
public void shouMysql() {
String sql="select * from student ";
try {
pst = con.prepareStatement(sql);
System.out.println("MySQL代码执行成功");
rs = pst.executeQuery();//pst的executeQuery方法执行查询返回结果集存到rs ,返回值是指针指向开始首地址。
while(rs.next()) {
System.out.print("账号:"+rs.getString("code")+" \t");
System.out.print("姓名:"+rs.getString("name")+" \t");
System.out.print("密码:"+rs.getString("pwd")+" \t");
System.out.println();
}
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
2.executeUpdate()方法用于执行INSERT、UPDATE和DELETE等修改数据库的操作语句,它返回一个整数值,表示受影响的行数。
例如:
static PreparedStatement pst=null;
//删除数据 根据code,自己不可以删除自己
public void DeletMysql() {
Scanner sc=new Scanner(System.in);
System.out.print("请输入要删除的账号:");
String code=sc.nextLine();
if(code!=id) {
String sql="delete from student where code = '" + code + "'";
try {
pst = con.prepareStatement(sql);//创建pst对象
pst.executeUpdate();//修改数据库表,把数据写入数据库
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
System.out.println("数据没有删除成功,可能原因sql语句,或者查询修改数据库都要用executeUpdate();");
}//修改数据库表,把数据写入数据库
}else {
System.out.println("不可以删除自身请重写输入要删除账号");
DeletMysql();
}
}
需要注意的是,executeUpdate()方法不能用于执行SELECT查询语句,如果尝试执行SELECT语句,将会抛出SQLException异常。同样地,executeQuery()方法也不能用于执行INSERT、UPDATE和DELETE等修改数据库的操作语句。
区别总结 :
改动数据库:executeUpdate()
只是看看 :executeQuery()
三.注意事项:
1. 使用之前需要先创建一个Statement对象或PreparedStatement对象,并将SQL语句作为参数传递给它们。
2. SQL语句的正确性非常重要。确保SQL语句语法正确,并且参数值正确绑定。
3. 在执行executeQuery()方法时,只能执行SELECT查询语句,不能执行INSERT、UPDATE和DELETE等修改操作语句。
4. 在执行executeUpdate()方法时,只能执行INSERT、UPDATE和DELETE等修改操作语句,不能执行SELECT查询语句。
5. 需要手动关闭ResultSet对象和Statement对象,以释放资源,可以使用try-with-resources语句或在finally块中关闭。
6. 对于executeQuery()方法返回的ResultSet对象,可以使用ResultSet对象的方法遍历和访问查询结果。
7. 对于executeUpdate()方法返回的整数值,表示受影响的行数,可以用于检查修改操作的结果。
8. 可以使用PreparedStatement对象来执行带有占位符的SQL语句,通过设置相应的参数值来防止SQL注入攻击。
9. 在执行executeUpdate()方法时,如果没有受影响的行数,可能是因为执行的SQL语句没有匹配的数据或语句写错了。
10. 需要确保数据库连接是有效的,并且具有适当的权限来执行SQL语句。
遵循这些注意事项可以帮助避免一些常见的错误和问题,并确保正确、安全地使用executeQuery()和executeUpdate()方法。