在Java编程中,如何同时在数据库上执行多个SQL命令?假定数据库名称是:testdb,其中有两张表:employee和dept,employee表中有4条记录,dept表中有2条记录。

创建数据库表的语句 -

use testdb;

-- 员工表

drop table if exists employees;

create table if not exists employees (

id int not null primary key,

age int not null,

name varchar(64),

dept_id int(10)

);

INSERT INTO employees VALUES (100, 28, 'MaxSu', 1);

INSERT INTO employees VALUES (101, 25, 'WeiWang', 2);

INSERT INTO employees VALUES (102, 30, 'KidaSu', 2);

INSERT INTO employees VALUES (103, 28, 'KobeBryant', 1);

----

-- 部门表

drop table if exists dept;

create table if not exists dept (

id int not null primary key,

name varchar (64)

);

INSERT INTO dept VALUES (1, '技术部');

INSERT INTO dept VALUES (2, '市场部');

以下示例中演示如何使用addBatch()和executeBatch()方法同时执行多个SQL命令。

package com.yiibai;

import java.sql.*;

public class ExecuteMultipleSQLStatements {

public static void main(String[] args) throws Exception {

String JDBC_DRIVER = "com.mysql.jdbc.Driver";

String DB_URL = "jdbc:mysql://localhost/testdb?useSSL=false";

String User = "root";

String Passwd = "123456";

try {

Class.forName(JDBC_DRIVER);

} catch (ClassNotFoundException e) {

System.out.println("Class not found " + e);

}

Connection con = DriverManager.getConnection(DB_URL, User, Passwd);

Statement stmt = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);

String insertEmp1 = "insert into employees(id,name,age,dept_id) values(110,'Jay',19, 1)";

String insertEmp2 = "insert into employees(id,name,age,dept_id) values(111,'Weiwei',22,2)";

String insertEmp3 = "insert into employees(id,name,age,dept_id) values(112,'Hkou',25,3)";

con.setAutoCommit(false);

stmt.addBatch(insertEmp1);

stmt.addBatch(insertEmp2);

stmt.addBatch(insertEmp3);

ResultSet rs = stmt.executeQuery("select * from employees");

rs.last();

System.out.println("rows before batch execution= " + rs.getRow());

stmt.executeBatch();

con.commit();

System.out.println("Batch executed");

rs = stmt.executeQuery("select * from employees");

rs.last();

System.out.println("rows after batch execution = " + rs.getRow());

}

}

上述代码示例将产生以下结果。

rows before batch execution= 4

Batch executed

rows after batch execution = 7

注:如果JDBC驱动程序安装不正确,将获得ClassNotfound异常。

Class not found java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

JDBC Class found

SQL exception occuredjava.sql.SQLException: No suitable driver found for jdbc:mysql://localhost/testdb

¥ 我要打赏

纠错/补充

收藏

加QQ群啦,易百教程官方技术学习群

注意:建议每个人选自己的技术方向加群,同一个QQ最多限加 3 个群。

java方法里执行两条sql_Java如何在数据库上执行多个SQL命令?相关推荐

  1. Java黑皮书课后题第8章:*8.31(几何:交点)编写一个方法,返回两条直线的交点。四个点存放在4*2的二维数组points中。编写一个程序,提示用户输入4个点,并显示交点

    *8.31(几何:交点)编写一个方法,返回两条直线的交点.四个点存放在4*2的二维数组points中.编写一个程序,提示用户输入4个点,并显示交点 题目 题目描述 破题 代码 本题运行实例 题目 题目 ...

  2. 07 - java 方法里面的 return

    Java 方法里面的 return return 之函数返回值 public static int sum(a, b) {return a + b; } return 之结束方法 Scanner sc ...

  3. mysql执行两条update语句

    执行两条update语句,没有join关联时 update dp_auto_group_price dagp ,dp_auto_group dag set dagp.is_pub = 0 ,dag.s ...

  4. Firebug网络面板里的两条竖线表示什么?

    Firebug的网络面板可用来查看网站各个资源的加载时间,以便帮助开发者更有效的提高页面加载速度.在这个面板中,我们会看到一蓝一红两条竖线,这两条竖线各代表什么含义呢? 蓝线表示DOMContentL ...

  5. shell中执行某条语句失败能不能重复执行_如何重复执行一条命令直至运行成功?...

    大家好,我是良许. 在我们的日常工作中,需要我们重复做的工作简直不能太多.比如,我们想要确认网络是否是连通的,传统的做法就是使用 ping 命令不停去测试某个地址(比如百度).网络比较好还好说,但如果 ...

  6. python求斜边上的高是多少厘米_已知一个直角三角形的两条直角边,如何求斜边上的高的长度...

    展开全部 利用:直角32313133353236313431303231363533e59b9ee7ad9431333431333963三角形的面积不变,即两直角边的乘积的一半=斜边乘以斜边上的高的一 ...

  7. insert into 多条数据_「数据库」一千行MySQL命令

    基本操作 /* Windows服务 */-- 启动MySQL net start mysql-- 创建Windows服务 sc create mysql binPath= mysqld_bin_pat ...

  8. Java方法案例--比较两个值是否相等

    package com.zhangxueliang.demo;import java.util.Scanner;@SuppressWarnings("all") public cl ...

  9. Java方法重载时参数类型有重合,它会选择执行哪一个?

    本文出处:http://blog.csdn.net/chaijunkun/article/details/7660178,转载请注明.由于本人不定期会整理相关博文,会对相应内容作出完善.因此强烈建议在 ...

最新文章

  1. 修改MD5加密 提高网站安全
  2. 场效应与三极管 电路标识符_看懂这6个提示,轻松搞定恒流源电源电路设计!...
  3. python中callable什么意思_Python中callable的理解?
  4. Juddi介绍及安装
  5. Linux下 /dev/null 21 相关知识说明
  6. python--循环列表中字典元素
  7. 【需求工程】需求应用域理解
  8. error while loading shared libraries: xxx.so.x错误
  9. uniapp debug能打开release不行_盘点在 Release 下由循环体优化所产生的不确定性 Bug...
  10. js声明数组的四种方式
  11. Linux制作ISO镜像文件
  12. redis 学习笔记(六) sorted_set数据类型
  13. QS排名前70-100的英国大学怎么选?
  14. 分享全球范围内比较好用的17个免费空间(基本稳定好多年)
  15. 服务器背板作用,硬盘和服务器背板
  16. The following error occured:
  17. date.gettime()返回的是什么?
  18. html中auto是设置什么的,css中margin:auto什么意思?margin:auto属性的用法详解
  19. 前端三件套系例之CSS——CSS3基础样式
  20. Java入门 - 方法的使用

热门文章

  1. mysql 转pxc_PXC 配置笔记-从MySQL直接转成PXC集群
  2. 高性能Linux服务器运维实战,《高性能Linux服务器构建实战》笔记
  3. Nature子刊:干旱条件下土壤细菌网络的稳定性不如真菌网络
  4. NBT:宏基因组读云建库+雅典娜算法组装获得微生物高质量基因组
  5. seaborn使用violinplot函数可视化小提琴图、使用stripplot函数添加抖动数据点(jittered points)、显示数据的稠密程度
  6. R语言数值向上近似函数(round, ceiling, floor, trunc, signif)实战
  7. R线性回归模型构建示例
  8. 为什么需要权重初始化(weight initialization)?常见的权重初始化方式有哪些?启发式权重初始化的好处?
  9. 生物信息学 生物科学、农学、林学、医学
  10. (邓爱萍)Java抽象 继承 接口