小编典典

我想知道是否可以使用JDBC执行类似的操作。

"SELECT FROM * TABLE;INSERT INTO TABLE;"

是的,有可能。据我所知,有两种方法。他们是

通过设置数据库连接属性以允许多个查询,默认情况下用分号分隔。

通过调用返回隐式游标的存储过程。

以下示例演示了上述两种可能性。

示例1 :(允许多个查询):

发送连接请求时,您需要将连接属性附加allowMultiQueries=true到数据库URL。这是额外的连接属性,如果那些已经存在的一些,比如autoReConnect=true,对等。可接受的值allowMultiQueries属性是true,false,yes,和no。其他任何值在运行时都会被拒绝SQLException。

String dbUrl = "jdbc:mysql:///test?allowMultiQueries=true";

除非通过了此类指令,否则SQLException将引发an 。

您必须使用execute( String sql

)或其其他变体来获取查询执行的结果。

boolean hasMoreResultSets = stmt.execute( multiQuerySqlString );

要遍历和处理结果,您需要执行以下步骤:

READING_QUERY_RESULTS: // label

while ( hasMoreResultSets || stmt.getUpdateCount() != -1 ) {

if ( hasMoreResultSets ) {

Resultset rs = stmt.getResultSet();

// handle your rs here

} // if has rs

else { // if ddl/dml/...

int queryResult = stmt.getUpdateCount();

if ( queryResult == -1 ) { // no more queries processed

break READING_QUERY_RESULTS;

} // no more queries processed

// handle success, failure, generated keys, etc here

} // if ddl/dml/...

// check to continue in the loop

hasMoreResultSets = stmt.getMoreResults();

} // while results

示例2 :要遵循的步骤:

创建一个或多个过程select,并进行DML查询。

使用从Java调用它CallableStatement。

您可以捕获ResultSet在过程中执行的多个。

DML结果无法捕获,但可以发出另一个结果select

来查找表中行的影响方式。

样品表和程序 :

mysql> create table tbl_mq( i int not null auto_increment, name varchar(10), primary key (i) );

Query OK, 0 rows affected (0.16 sec)

mysql> delimiter //

mysql> create procedure multi_query()

-> begin

-> select count(*) as name_count from tbl_mq;

-> insert into tbl_mq( names ) values ( 'ravi' );

-> select last_insert_id();

-> select * from tbl_mq;

-> end;

-> //

Query OK, 0 rows affected (0.02 sec)

mysql> delimiter ;

mysql> call multi_query();

+------------+

| name_count |

+------------+

| 0 |

+------------+

1 row in set (0.00 sec)

+------------------+

| last_insert_id() |

+------------------+

| 3 |

+------------------+

1 row in set (0.00 sec)

+---+------+

| i | name |

+---+------+

| 1 | ravi |

+---+------+

1 row in set (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

从Java调用过程 :

CallableStatement cstmt = con.prepareCall( "call multi_query()" );

boolean hasMoreResultSets = cstmt.execute();

READING_QUERY_RESULTS:

while ( hasMoreResultSets ) {

Resultset rs = stmt.getResultSet();

// handle your rs here

} // while has more rs

2020-05-17

java 执行查询_在单个语句中用Java执行多个查询相关推荐

  1. 双表查询java代码_什么是JDBC?Java数据库连接性简介

    JDBC(Java数据库连接性)是Java API,用于管理与数据库的连接,发出查询和命令以及处理从数据库获得的结果集.JDBC在1997年作为JDK 1.1的一部分发布,是为Java持久层开发的首批 ...

  2. 《跟我学java》_《跟我学Java——基础篇02》

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 2. Java中的注释: a) 什么是注释: i. 我们的Java代码都是用英文编写的,一旦功能比较复杂,那么就没那么容易看懂,所以有的时候我们需要写一些 ...

  3. java书籍_非科班,自学java需要把软件工程的课程全部学习完吗?

    问题一:非科班是否能自学Java.问题二:自学Java是否需要把软件工程课程全部学完?问题三:如何自学Java? 解决问题一:非科班是否能自学Java.不知道你是否有这个担心疑虑,从事Java技术开发 ...

  4. 计算机等级考试java题型_计算机二级考试《java》试题及答案

    计算机二级考试<java>试题及答案 2017下半年计算机二级考试将于9月23日-26日举行,下面是小编为大家整理的计算机二级考试<java>试题及答案,欢迎参考~ 计算机二级 ...

  5. java获取java版本_在运行时获取Java版本

    最简单的方法(java.specification.version): double version = Double.parseDouble(System.getProperty("jav ...

  6. 重庆大学java考试_重庆大学网络教育学院 《Java程序设计》形考一答案

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 重庆大学网络教育学院 <Java程序设计>形考一答案 786971758 一.单项选择题 (共 30 题.共 60 分)1. 给定程序如下 p ...

  7. socket编程java笔试_面向应届实习生的Java笔试题

    2014-03-27 06:30:02 阅读( 187 ) JAVA基础测试题 班级                 姓名              分数 1.下面的程序输出 public class ...

  8. vim java 编程_你也用Vim写Java代码?

    献给所有曾试图写Java而痛苦挣扎的Vimers, 请不要害怕, 我也是你们的一员 序 文章源起于segmentfault论坛中的一个问题, 由于回答的有点尽性, 便转为文章. 题主应该是个Vim初学 ...

  9. java安装_我最喜欢的Java高级开发人员书籍

    java安装 我上一篇博客文章(我对高级Java开发人员的十个最喜欢的在线资源)的想法,是由Xiaoran Wang发表的 "面向高级Java开发人员的十大网站"的启发. Wang ...

最新文章

  1. 单链表中一个插入操作的分析
  2. 蓦然回首,我是如何走上数据库开发这条路的?(一)
  3. Elasticsearch6.X 去重
  4. 2013_hangzhou_online
  5. 微软:软件帝王的复兴之路
  6. RISC-V CTO: 我们不会像 Arm 和 x86 那样左右芯片的设计
  7. TCP/IP协议详解内容总结(怒喷一口老血)
  8. 五年来,开源论坛软件MyBB共修复100多个漏洞
  9. zoj1022 Parallel Expectations(DP)
  10. 冰点下载器手机版apk_冰点文库下载器安卓手机版
  11. Axure 8.0破解版下载
  12. lombok依赖包介绍
  13. 教你如何制作网页木马
  14. 思科模拟器路由表怎么看_思科模拟器基本命令
  15. 用ArcGIS提取HWSD中的土壤单一属性数据
  16. Take me to your heart(English Song)
  17. 使用js脚本实现微信定时发送信息
  18. 使用计算机管理文件教后反思,《管理计算机中的文件》教学设计
  19. Linux中常用的文件目录,Linux学习笔记2——Linux中常用文件目录操作命令
  20. 每日三思:微信小程序多层级父子组件如何在子组件滚动加载

热门文章

  1. 从三大方面全面解析物联网卡
  2. arrayvalue php,phparrayvalue
  3. 通俗易懂的Monte Carlo的积分方法(三)
  4. python怎样装pandas_小白学python:坑一:如何安装pandas和numpy
  5. AcWing 798. 差分矩阵
  6. 语言怎么表示词谱_黄庭坚被踢了!喝火令,还词谱本来面目
  7. redis使用sysc超时_优雅的处理Redis访问超时
  8. 浮点数表示(记录学习过程中遇到的问题)
  9. mysql 日志mixed模式_[MySQL binlog]彻底解析Mixed日志格式的binlog
  10. c语言求浮点数矩阵的逆程序,逆矩阵求程序!!!谢谢