JDBC介绍(四)

博客介绍了使用JDBC批量执行SQL语句的方法,可通过executeBatch()在一次调用中执行多条SQL,先使用addBatch()添加语句。还提到在Connection自动认可为true和false时执行的不同情况,以及执行出错时会抛出BatchUpdateException异常,可获取正确SQL条数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Statement Batch
Statement的execute等方法一次只能执行一条SQL语句,如果有多条SQL语句要执行的话,可以使用executeBatch()方法,在一次方法呼叫中执行多条SQL语句.来提高执行效率!先使用addBatch()方法将要执行的SQL语句加入,然后执行executeBatch()即可:
          Statement stmt=conn.createStatement();
          stmt.addBatch("INSERT INTO message VALUES(' Michael Chen'," +
                                 "'blog.youkuaiyun.com/ybugchen','留言',"+
                                 "'2005-2-4','欢迎')");
          stmt.addBatch("INSERT INTO message VALUES(' Jim'," +
                                 "'blog.youkuaiyun.com/ybugchen','留言',"+
                                 "'2005-2-4','欢迎')");
          
          stmt.addBatch("INSERT INTO message VALUES(' Susan'," +
                                 "'blog.youkuaiyun.com/ybugchen','留言',"+
                                 "'2005-2-4','欢迎')");
         stmt.executeBatch();
在Connection的自动[认可](commit)为true的情况下,执行executeBatch()时,每执行一行SQL都立即更新数据库,如果中间有某行SQL有错误,则错误之前的SQL语句对数据库的更新已经生效,而错误之后的语句不会执行,如果要确保所有的Batch SQL语句都能执行,可以将Connection 的[许可]设置为false,在executeBatch()方法成功之后,在执行commit()方法确认对数据库的更新操作.
       conn.setAutoCommit(false);
      Statement stmt=conn.createStatement();
          stmt.addBatch("INSERT INTO message VALUES(' Michael Chen'," +
                                 "'blog.youkuaiyun.com/ybugchen','留言',"+
                                 "'2005-2-4','欢迎')");
          stmt.addBatch("INSERT INTO message VALUES(' Jim'," +
                                 "'blog.youkuaiyun.com/ybugchen','留言',"+
                                 "'2005-2-4','欢迎')");
          
          stmt.addBatch("INSERT INTO message VALUES(' Susan'," +
                                 "'blog.youkuaiyun.com/ybugchen','留言',"+
                                 "'2005-2-4','欢迎')");
         stmt.executeBatch();
         conn.commit();
在执行executeBatch()时如果SQL发生错误,会抛出BatchUpdateException异常,可以由这个异常组件的getUpdateCounts()方法取得正确的SQL条数

               try
                 {
                        conn.addBatch(...)
                        ....
                        stmt.executeBatch();
                  }
                 catch(BatchUpdateException e)
                  {
                        System.out.println("成功执行SQL语句条数="+e.getUpdateCounts());
                  }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值