java 执行查询_在单个语句中用Java执行多个查询
小编典典
我想知道是否可以使用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执行多个查询相关推荐
- 双表查询java代码_什么是JDBC?Java数据库连接性简介
JDBC(Java数据库连接性)是Java API,用于管理与数据库的连接,发出查询和命令以及处理从数据库获得的结果集.JDBC在1997年作为JDK 1.1的一部分发布,是为Java持久层开发的首批 ...
- 《跟我学java》_《跟我学Java——基础篇02》
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 2. Java中的注释: a) 什么是注释: i. 我们的Java代码都是用英文编写的,一旦功能比较复杂,那么就没那么容易看懂,所以有的时候我们需要写一些 ...
- java书籍_非科班,自学java需要把软件工程的课程全部学习完吗?
问题一:非科班是否能自学Java.问题二:自学Java是否需要把软件工程课程全部学完?问题三:如何自学Java? 解决问题一:非科班是否能自学Java.不知道你是否有这个担心疑虑,从事Java技术开发 ...
- 计算机等级考试java题型_计算机二级考试《java》试题及答案
计算机二级考试<java>试题及答案 2017下半年计算机二级考试将于9月23日-26日举行,下面是小编为大家整理的计算机二级考试<java>试题及答案,欢迎参考~ 计算机二级 ...
- java获取java版本_在运行时获取Java版本
最简单的方法(java.specification.version): double version = Double.parseDouble(System.getProperty("jav ...
- 重庆大学java考试_重庆大学网络教育学院 《Java程序设计》形考一答案
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 重庆大学网络教育学院 <Java程序设计>形考一答案 786971758 一.单项选择题 (共 30 题.共 60 分)1. 给定程序如下 p ...
- socket编程java笔试_面向应届实习生的Java笔试题
2014-03-27 06:30:02 阅读( 187 ) JAVA基础测试题 班级 姓名 分数 1.下面的程序输出 public class ...
- vim java 编程_你也用Vim写Java代码?
献给所有曾试图写Java而痛苦挣扎的Vimers, 请不要害怕, 我也是你们的一员 序 文章源起于segmentfault论坛中的一个问题, 由于回答的有点尽性, 便转为文章. 题主应该是个Vim初学 ...
- java安装_我最喜欢的Java高级开发人员书籍
java安装 我上一篇博客文章(我对高级Java开发人员的十个最喜欢的在线资源)的想法,是由Xiaoran Wang发表的 "面向高级Java开发人员的十大网站"的启发. Wang ...
最新文章
- 单链表中一个插入操作的分析
- 蓦然回首,我是如何走上数据库开发这条路的?(一)
- Elasticsearch6.X 去重
- 2013_hangzhou_online
- 微软:软件帝王的复兴之路
- RISC-V CTO: 我们不会像 Arm 和 x86 那样左右芯片的设计
- TCP/IP协议详解内容总结(怒喷一口老血)
- 五年来,开源论坛软件MyBB共修复100多个漏洞
- zoj1022 Parallel Expectations(DP)
- 冰点下载器手机版apk_冰点文库下载器安卓手机版
- Axure 8.0破解版下载
- lombok依赖包介绍
- 教你如何制作网页木马
- 思科模拟器路由表怎么看_思科模拟器基本命令
- 用ArcGIS提取HWSD中的土壤单一属性数据
- Take me to your heart(English Song)
- 使用js脚本实现微信定时发送信息
- 使用计算机管理文件教后反思,《管理计算机中的文件》教学设计
- Linux中常用的文件目录,Linux学习笔记2——Linux中常用文件目录操作命令
- 每日三思:微信小程序多层级父子组件如何在子组件滚动加载
热门文章
- 从三大方面全面解析物联网卡
- arrayvalue php,phparrayvalue
- 通俗易懂的Monte Carlo的积分方法(三)
- python怎样装pandas_小白学python:坑一:如何安装pandas和numpy
- AcWing 798. 差分矩阵
- 语言怎么表示词谱_黄庭坚被踢了!喝火令,还词谱本来面目
- redis使用sysc超时_优雅的处理Redis访问超时
- 浮点数表示(记录学习过程中遇到的问题)
- mysql 日志mixed模式_[MySQL binlog]彻底解析Mixed日志格式的binlog
- c语言求浮点数矩阵的逆程序,逆矩阵求程序!!!谢谢