Java中executeQuery()和executeUpdate()的区别及说明

 更新时间:2025年11月06日 09:29:27   作者:@纯牛奶  
executeQuery()和executeUpdate()是JDBC中用于执行SQL语句的方法,前者用于执行查询语句,返回ResultSet对象;后者用于执行修改操作,返回受影响的行数,使用这些方法时需要注意SQL语句的正确性、资源的释放以及防止SQL注入

一、概述

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()方法。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot各种事务操作实战(自动回滚、手动回滚、部分回滚)

    SpringBoot各种事务操作实战(自动回滚、手动回滚、部分回滚)

    本文主要介绍了SpringBoot各种事务操作实战,包含自动回滚、手动回滚、部分回滚这三种,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2024-05-05
  • Java实现图片合成的示例详解

    Java实现图片合成的示例详解

    前端有一个神器——canvas,这个画布标签可以处理各种图片的合成,可以精确到图片的具体坐标。java后端也有这样的神器,那就是image-combiner,可以很简单的合成图片,感兴趣的可以试一试
    2022-01-01
  • Java实现高速视频下载示例代码

    Java实现高速视频下载示例代码

    这篇文章主要为大家详细介绍了如何使用Java实现高速视频下载效果,文中的示例代码讲解详细,具有一定的借鉴价值,有需要的小伙伴可以跟随小编一起学习一下
    2025-06-06
  • 检查Java环境变量是否配置成功的两种方法

    检查Java环境变量是否配置成功的两种方法

    本文详细介绍如何配置Java环境变量,包括设置JAVA_HOME路径及添加到系统PATH中,确保Java命令行工具可用,同时,演示了如何使用命令行编译和运行Java程序,以及使用javap工具进行反汇编,需要的朋友可以参考下
    2026-03-03
  • Spring Boot中Bean定义方调用方式解析

    Spring Boot中Bean定义方调用方式解析

    这篇文章主要介绍了Spring Boot中Bean定义方调用方式解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07
  • 浅析JVM的垃圾回收器

    浅析JVM的垃圾回收器

    这篇文章主要介绍了JVM垃圾回收器的相关资料,帮助大家更好的理解和学习Java虚拟机的相关知识,感兴趣的朋友可以了解下
    2020-11-11
  • Java工厂模式的深入了解

    Java工厂模式的深入了解

    这篇文章主要为大家介绍了Java工厂模式,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助
    2022-01-01
  • Java Jwt库的简介及使用详解

    Java Jwt库的简介及使用详解

    JWT 是开放的行业标准RFC7591,用来实现端到端安全验证,就是通过一些算法对加密字符串和JSON对象之间进行加解密,下面通过本文给大家介绍Java Jwt库的简介及使用,感兴趣的朋友一起看看吧
    2021-11-11
  • Struts2之Validator验证框架的详细介绍

    Struts2之Validator验证框架的详细介绍

    Struts2中提供了数据校验验证数据例如验证邮件、数字等,本篇文章介绍了Struts2之Validator的详细介绍,有兴趣的可以了解一下。
    2017-03-03
  • Alibaba SpringCloud集成Nacos、openFeign实现负载均衡的解决方案

    Alibaba SpringCloud集成Nacos、openFeign实现负载均衡的解决方案

    Spring Cloud Alibaba 致力于提供微服务开发的一站式解决方案,此项目包含开发分布式应用微服务的必需组件,这篇文章主要介绍了Alibaba SpringCloud集成Nacos、openFeign实现负载均衡,需要的朋友可以参考下
    2024-05-05

最新评论