批处理:若需要对数据库进行多步操作,则就没必要每次都和数据库进行一次通信,这样很消耗资源和时间。则需要将操作进行批处理;
    Statement方式来实现批处理
        优点:
            可以包含结构不同的sql语句
        缺点:
            不能防止sql注入攻击
            没有预编译机制, 效率低下
            如果发送的sql语句主干部分相同, 主干部分每次都需要写.
        
    PreparedStatement方式实现批处理
        优点:
            可以防止sql注入攻击
            采用预编译机制, 效率高
            如果发送的sql语句主干部分相同, 主干部分只需要写一次, 每次发送的只是参数部分.
        缺点:
            包含的sql语句的主干部分必须相同

PreparedStatement 实现基本的批处理:

  1. public static void main(String[] args) {
  2. Connection conn = null;
  3. Statement stat = null;
  4. PreparedStatement ps = null;
  5.  
  6. try {
  7. Class.forName("com.mysql.jdbc.Driver");
  8. conn = DriverManager.getConnection("jdbc:mysql:///mydb5","root","admin");
  9. //开始事务
  10. conn.setAutoCommit(false);
  11. String sql = "insert into tb_batch values (null,?)";
  12. ps = conn.prepareStatement(sql);
  13. for(int i=2000;i<3000;i++){
  14. ps.setString(1, "tong"+i);
  15. ps.addBatch();
  16. }
  17. ps.executeBatch();
  18. //提交事务
  19. conn.commit();
  20. System.out.println("完成???????????");
  21.  
  22. } catch (Exception e) {
  23. e.printStackTrace();
  24. }finally{
  25. JDBCutils.closeResou(conn, ps, null);
  26. }
  27.  
  28. }

Statement 实现基本的批处理:

  1. public static void main(String[] args) {
  2.  
  3. Connection conn = null;
  4. Statement stat = null;
  5. //注册驱动和连接数据库
  6. conn = JDBCutils.getConn();
  7. try {
  8. stat = conn.createStatement();
  9. stat.addBatch("drop database if exists mydb5");
  10. stat.addBatch("create database mydb5");
  11. stat.addBatch("use mydb5");
  12. stat.addBatch("create table tb_batch(id int primary key auto_increment, name varchar(20))");
  13. stat.addBatch("insert into tb_batch values(null,'a')");
  14. stat.addBatch("insert into tb_batch values(null,'b')");
  15. stat.addBatch("insert into tb_batch values(null,'c')");
  16. stat.executeBatch();
  17. System.out.println("完成");
  18.  
  19. } catch (Exception e) {
  20. e.printStackTrace();
  21. }finally{
  22. JDBCutils.closeResou(conn, stat, null);
  23. }
  24.  
  25. }

注:JDBCutils.closeResou这个是自定义的一个JDBC工具类。主要是用来关闭资源和建立连接。

http://www.cnblogs.com/tongxuping/p/6880315.html    ---> JDBCutils自定义的工具类包

PreparedStatement 和 Statement 实现基本的批处理的更多相关文章

  1. PreparedStatement与Statement的区别

    PreparedStatement与statement的区别 1.PreparedStatement是预编译的,对于批量处理可以大大提高效率. 也叫JDBC存储过程 2.使用 Statement 对象 ...

  2. preparedStatement和Statement 有什么不一样

    1. PreparedStatement接口继承Statement, PreparedStatement 实例包含已编译的 SQL 语句,所以其执行速度要快于 Statement 对象.    2.作 ...

  3. JDBC 中preparedStatement和Statement区别

    一.概念 PreparedStatement是用来执行SQL查询语句的API之一,Java提供了 Statement.PreparedStatement 和 CallableStatement三种方式 ...

  4. Java中PreparedStatement与Statement的总结

    概要: PreparedStatement 接口继承自 Statement 接口,PreparedStatement 比普通Statement 对象使用起来更加灵活,更有效率. 一.PreparedS ...

  5. JDBC增删改查,PreparedStatement和Statement的区别

    此篇是在上一篇的基础上使用PreparedStatement对象来实现JDBC增删改查的 具体工具类JDBCTools和实现类和配置文件在上一篇Statement对象实现的时候有写. 上一篇地址htt ...

  6. PreparedStatement和Statement的区别

    转自:http://blog.sina.com.cn/s/blog_77eba18f01019csh.html 1. PreparedStatement接口继承Statement, PreparedS ...

  7. 应该始终以PreparedStatement代替Statement

    在JDBC应用中,如果你已经是稍有水平开发者,你就应该始终以PreparedStatement代替Statement.也就是说,在任何时候都不要使用Statement 一.代码的可读性和可维护性.虽然 ...

  8. Java中PreparedStatement和Statement的用法区别(转)

    1. PreparedStatement接口继承Statement, PreparedStatement 实例包含已编译的 SQL 语句,所以其执行速度要快于 Statement 对象.   2.作为 ...

  9. JDBC中PreparedStatement和Statement的区别

    共同点: PreparedStatement和Statement都是用来执行SQL查询语句的API之一. 不同点: 在PreparedStatement中,当我们经常需要反复执行一条结构相似的sql语 ...

随机推荐

  1. [剑指Offer] 3.从尾到头打印链表

    题目描述 输入一个链表,从尾到头打印链表每个节点的值. [思路]用一个vector存储,遍历链表时每次从前面插入 /** * struct ListNode { * int val; * struct ...

  2. Oracle解决索引碎片功能

    我们开始时向一个空的带索引的表中插入大量数据后,是不会产生碎片问题的,但是,数据库经过很长一段时间的增删改查后,难免会出现碎片问题,影响数据库的性能,Oracle对于这一问题有自己的解决方案. 下面介 ...

  3. Python 类和对象-上

    #类和对象 class Human: #属性 -> 成员属性(变量) ear = 2 mouth = 1 sex = 'man' age = 28 name = 'zhangwang' marr ...

  4. hdu6097 Mindis(几何)

    题解: 这里是用解析解的做法, 我们发现如果以P和Q做椭圆,那么当椭圆与圆相切的时候,答案最优 那么方程就是这样的 联立之后,解delta等于0,可以得到 答案就是2a了 注意不一定任何情况都有解,当 ...

  5. BZOJ4567 [Scoi2016]背单词 【trie树 + 贪心】

    题目链接 BZOJ4567 题解 题意真是鬼畜= = 意思就是说我们应先将一个串的所有后缀都插入之后再插入这个串,产生代价为其到上一个后缀的距离 我们翻转一下串,转化为前缀,就可以建\(trie\)树 ...

  6. 【CF edu 30 D. Merge Sort】

    time limit per test 2 seconds memory limit per test 256 megabytes input standard input output standa ...

  7. Dilworth定理证明

    命题:偏序集能划分成的最少的全序集的个数与最大反链的元素个数相等. (离散数学结构第六版课本P245:把一个偏序集划分成具有全序的子集所需要的最少子集个数与元素在偏序下都是不可比的最大集合的基数之间有 ...

  8. python3处理pdf

    https://github.com/1049451037/pdfminer3k 使用pdfminer3k,如果是python2的话直接用pdfminer就行了. python setup.py in ...

  9. Terminals Project

    https://github.com/Terminals-Origin Terminals Project Terminals is a secure, multi tab terminal serv ...

  10. 解决设置了background-size: cover; 但是图片在ios下显示不完整的问题

    设置 background-size: % 99.9%: