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

总结

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

相关文章

  • Java面试题目集锦

    Java面试题目集锦

    本文是小编日常收集整理的java面试题目,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • Java结合Vue项目打包并进行服务器部署

    Java结合Vue项目打包并进行服务器部署

    本文主要介绍了Java结合Vue项目打包并进行服务器部署,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • Java行为型设计模式之外观设计模式详解

    Java行为型设计模式之外观设计模式详解

    外观模式为多个复杂的子系统,提供了一个一致的界面,使得调用端只和这个接口发生调用,而无须关系这个子系统内部的细节。本文将通过示例详细为大家讲解一下外观模式,需要的可以参考一下
    2022-11-11
  • JAVA进阶之HashMap底层实现解析

    JAVA进阶之HashMap底层实现解析

    Hashmap是java面试中经常遇到的面试题,大部分都会问其底层原理与实现,为了能够温故而知新,特地写了这篇文章,以便时时学习
    2021-11-11
  • 一文教你学会如何使用MyBatisPlus

    一文教你学会如何使用MyBatisPlus

    本篇文章,我们通过 MyBatis Plus 来对一张表进行 CRUD 操作,来看看是如何简化我们开发的,文中通过代码示例介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-05-05
  • SpringBoot Security安装配置及Thymeleaf整合

    SpringBoot Security安装配置及Thymeleaf整合

    这篇文章主要介绍了SpringBoot Security安装配置及Thymeleaf整合,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-12-12
  • Java冒泡排序简单实现

    Java冒泡排序简单实现

    这篇文章主要介绍了Java冒泡排序简单实现,具有一定借鉴价值,需要的朋友可以参考下。
    2017-12-12
  • nacos使用占位符${}进行参数配置的方法

    nacos使用占位符${}进行参数配置的方法

    这篇文章主要介绍了nacos如何使用占位符${}进行参数配置,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-12-12
  • SpringBoot结合WebSocket实现聊天功能

    SpringBoot结合WebSocket实现聊天功能

    本文介绍了如何使用SpringBoot和WebSocket实现一个简单的聊天功能,包括导入依赖、配置类、创建消息实体、指定ServerEndpoint、创建客户端等步骤,通过具体示例,演示了如何发送个人消息和群发消息,实现了基本的聊天功能,适合需要在项目中实现实时通讯功能的开发者参考
    2024-11-11
  • 基于SpringAOP+Caffeine实现本地缓存的实例代码

    基于SpringAOP+Caffeine实现本地缓存的实例代码

    公司想对一些不经常变动的数据做一些本地缓存,我们使用AOP+Caffeine来实现,所以本文给大家介绍了
    基于SpringAOP+Caffeine实现本地缓存的实例,文中有详细的代码供大家参考,需要的朋友可以参考下
    2024-03-03

最新评论