一、概述
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()方法。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持代码网。
发表评论