execute,executeQuery和executeUpdate的区别

execute,executeQuery和executeUpdate的区别在jdbc中有3种执行sql的语句分别是execute,executeQuery和executeUpdateexecute执行增删改查操作execute返回的结果是个boolean型,当返回的是true的时候,表明有ResultSet结果集,通常是执行了select操作,当返回的是false时,通常是执行了insert、update、delete等操作。execute通常用于执行不明确的s

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用

在jdbc中有3种执行sql的语句分别是execute,executeQuery和executeUpdate

execute执行增删改查操作

execute返回的结果是个boolean型,当返回的是true的时候,表明有ResultSet结果集,通常是执行了select操作,当返回的是false时,通常是执行了insert、update、delete等操作。execute通常用于执行不明确的sql语句。


executeQuery执行查询操作

executeQuery返回的是ResultSet结果集,通常是执行了select操作。


executeUpdate执行增删改操作

executeUpdate返回的是int型,表明受影响的行数,通常是执行了insert、update、delete等操作



实例如下:

package javaTest;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;

public class ConnDataBase {

	public static void main(String[] args) {
		execute();//增删改查
//		executeQuery();//excuteQuery 查
//		executeUpdate();//excuteUpdate 增删改
	}
	/**
	 * 获取连接
	 * @return 连接对象
	 */
	public static Connection getConnection(){
		Connection con = null;
		try {
			Class.forName("oracle.jdbc.OracleDriver");//获取oracle驱动
			con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:ORCL", "ssh1", "ssh1");///填入url,用户名,密码
		}catch(Exception e){
			e.printStackTrace();
		}
		return con;
	}
	
	/**
	 * 用executeUpdate执行增删改操作
	 */
	public static void executeUpdate(){
		Connection con=null;
		try {
			con=getConnection();
			String sql="insert into student(s#,sname,sage,ssex) values('7','哈7','27','男')";
//			String sql="delete from student where s#='7'";
//			String sql="update student set sname='呵7' where s#='7'";
			Statement st=con.createStatement();//创建用于执行静态的statement对象
			int count=st.executeUpdate(sql);//执行sql插入(删除、更新)语句,返回插入的行数
			System.out.println("插入(删除、更新)"+count+"条数据");
			con.close();
		} catch (SQLException e) {
			e.printStackTrace();
		}
	}
	
	/**
	 * 用executeUpdate执行查询操作
	 */
	public static void executeQuery(){
		Connection con = null;
		try {
			con = getConnection();
			String sql = "select * from Student";
			Statement st = con.createStatement();
			ResultSet rs = st.executeQuery(sql);
			while (rs.next()) {
				ResultSetMetaData rsmd = rs.getMetaData();//用于分析结果集的元数据接口
	            int columnCount = rsmd.getColumnCount();//列数
	            for(int i=0;i<columnCount;i++){
	            	System.out.print(rs.getString(i+1)+" ");     	
	            }
	            System.out.println();
			}
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	/**
	 * 用execute执行增删改查操作
	 */
	public static void execute(){
		Connection con = null;
		try {
			con = getConnection();
			String sql = "select * from Student";
//			String sql="insert into student(s#,sname,sage,ssex) values('7','哈7','27','男')";
//			String sql="delete from student where s#='7'";
//			String sql="update student set sname='呵7' where s#='7'";
			Statement st = con.createStatement();
			boolean hasResultSet = st.execute(sql);
			if(hasResultSet){
				ResultSet rs=st.getResultSet();
				while (rs.next()) {
					ResultSetMetaData rsmd = rs.getMetaData();//用于分析结果集的元数据接口
		            int columnCount = rsmd.getColumnCount();//列数
		            for(int i=0;i<columnCount;i++){
		            	System.out.print(rs.getString(i+1)+" ");     	
		            }
		            System.out.println();
				}
			}else{
				int count=st.getUpdateCount();//受影响行数
				System.out.println("插入(删除、更新)"+count+"条数据");
			}
			con.close();
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/180154.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • linux 进程抓包命令,linux抓包命令之tcpdump详解[通俗易懂]

    linux 进程抓包命令,linux抓包命令之tcpdump详解[通俗易懂]顾名思义,tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息,tcpdump凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具.实用命令实例:(1).默认启动#普通情况下,直接启动tcpdump将监视第一个网络接口上所有流过的数据包.[[…

    2022年6月17日
    71
  • Win10下安装Ubuntu20.04双系统,看这一篇就够了

    Win10下安装Ubuntu20.04双系统,看这一篇就够了前言:既然你都找到这了,相信对Linux和Ubuntu已经有了一定的了解,这里就不再做过多的赘述,直接步入正题了。由于各种原因我已经反复装了七八遍的Ubuntu(从16.04到20.04都装过几次),发现不同版本的Ubuntu安装过程都大同小异,就决定拿最新版的20.04来和大家分享一下。由于安装过程中我不知道怎么截图,有些的配图是手机拍摄的,敬请谅解。…

    2022年7月24日
    11
  • 集成框架 javaweb开发平台ssmy_m(生成代码) java struts2 mybatis spring maven jquery

    集成框架 javaweb开发平台ssmy_m(生成代码) java struts2 mybatis spring maven jquery

    2021年12月17日
    38
  • Python写的我的世界源码+现成

    文章目录不想阅读代码者跳过正派活于话少今天第一次讲Python不要问我为什么之前不讲,就不讲~(假装自己学过python但是不讲)瞧,标题是什么,敢多说吗(我也不敢多说啊)效果图:源码(903行)from__future__importdivisionimportsysimportmathimportrandomimporttimefromcollectionsimportdequefrompygletimportimagefrompyglet.g

    2022年4月14日
    161
  • linux文件打开失败_linux浏览文件的命令

    linux文件打开失败_linux浏览文件的命令某次突然关闭连接…..会出现swp文件,那么就要使用ll-a找到swp文件然后rm-fswp文件,就可以正常打开文件了

    2022年8月31日
    5
  • 我的学习历程

    我的学习历程@[TOC]不负青春,加油干!自我介绍及共勉大家好!我是一名准大三学生,进入编程的大门已经2年的时间,从大一的css与html再到大二的java,javaweb,数据结构与算法(想哭的有没有),mysql,javascript,vue.js,javaee。我从一个啥也不会的小白转变成一个啥都想尝试的大白其中有艰难(调试bug弄了一晚上)有失落(参加蓝桥杯没拿奖)有幸福(用程序给女朋友写了个生日祝福软件)有迷茫(不知道前面的路该怎么选择)。刚进入这个圈子是因为觉得弄计算机的人特别酷,觉得黑客是这个世

    2022年10月5日
    4

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号