批处理SQL语句

作用:想发送多条SQL,又要降低与数据库系统的交互,这时使用批处理
    
    一】Statement对象——适合对不同结构的SQL语句进行批处理操作
        步骤:
            1)将给定的 SQL 命令添加到此 Statement 对象的当前命令列表中
                void addBatch(String sql);
            2)将一批命令提交给数据库来执行,如果全部命令执行成功,则返回更新计数组成的数组。
                int[] executeBatch()
                返回值:
                    1> 大于等于 0 的数 - 指示成功处理了命令,是给出执行命令所影响数据库中行数的更新计数
                    2> SUCCESS_NO_INFO 的值 - 指示成功执行了命令,但受影响的行数是未知的
                    3> EXECUTE_FAILED 的值 - 指示未能成功执行命令,仅当命令失败后驱动程序继续处理命令时出现
                    
            3)清空此 Statement 对象的当前 SQL 命令列表
                void clearBatch();

code:

          /*此方法只会连接一次,但是会编译多次*/
            stmt = conn.createStatement();
            /*添加SQL语句*/
            stmt.addBatch(SqlMapping.ADD_USER_SQL);
            stmt.addBatch(SqlMapping.MODIFIED_USER_SQL);
            /*执行多条SQL语句*/
            int[] rows = stmt.executeBatch();
            System.out.println(rows.length);
            /*清空SQL语句*/
            stmt.clearBatch();    

二】PreparedStatement对象——适合对相同机构的SQL语句进行批处理操作
        重点类:
            void addBatch();
            void executeBatch()
            void clearBatch();
        code:

       /*此方式只连接一次,也只编译一次!*/
            pstmt = conn.prepareStatement(SqlMapping.ADD_USER_PRSQL);
            for (int i = 0; i < 1003; i++) {
                pstmt.setString(1, "jack" + i);
                pstmt.setInt(2, (i + 15) % 30);
                pstmt.addBatch();
                if (0 == (i % 100)) {
                    pstmt.executeBatch();
                    pstmt.clearBatch();
                }
            }
            pstmt.addBatch();
            pstmt.execute();
            pstmt.clearBatch();
时间: 2024-08-13 22:22:37

批处理SQL语句的相关文章

MySQL批处理SQL语句

MySQL 支持批处理的模式执行一批SQL语句,下面的例子就是实验MySQL如何在windows下批处理执行SQL语句. create table test(id int,name varchar(20)); insert into test values(1,'watson'); batchfile.txt里包含下面的一些SQL 语句,此文件放在windows系统的c:/batchmysql/batchfile.txt insert into test select * from test;

java实现sql语句批处理

Statement实现批处理: 优点:能够处理多种不同结构的sql语句 缺点:不能预处理,执行效率较差.对于参数不同的同一条sql语句需要多次调用addBatch() package com.itheima.batch; import java.sql.Connection; import java.sql.Statement; import org.junit.Test; import com.itheima.util.DBUtil; public class StatementBatch {

DB操作-用批处理执行Sql语句

用批处理在命令行状态下调用查询分析器来执行这个sql文件里的语句.下面就是sqlserver帮助里对于查询分析器(isqlw)命令行参数的解释:isqlw 实用工具(SQL 查询分析器)使您得以输入 Transact-SQL 语句.系统存储过程和脚本文件.通过设置快捷方式或创建批处理文件,可以启动预配置的 SQL 查询分析器. 1.语法 isqlw     [-?] |      [          [-S server_name[instance_name]]          [-d da

JDBC批处理Select语句

注:为了更好理解本文,请结合原文阅读 在上一篇文章中提到了PreparedStatement的局限性:PreparedStatement不允许一个占位符(?)设置多个值,本文试图从其它角度来解决该问题. 在网络上开销最昂贵的资源就是客户端与服务器往返的请求与响应,JDBC中类似的一种情况就是对数据库的调用,如果你在做数据插入.更新.删除操作,可以使用executeBatch()方法减少数据库调用次数,如: 1 2 3 4 5 Statement pstmt = conn.createStatem

Sql语句不能识别Go的解决办法(动态创建表的触发器)

问题来源 用sqlserver直接打开sql文本,执行没问题,但是当用Sqlcommand类执行cmdtext命令文本时总是失败报错. 原因分析及解决 用数据库直接执行sql语句没问题,甚至还可以用Go来进行分批处理,但是当你用链接类访问数据库,并执行sql语句时就有些限制,如下: System.Data.SqlClient.SqlCommand cmd; try { using (System.Data.SqlClient.SqlConnection newconn = new System.

长沙做网站公司解密如何编写高效率的SQL语句

如何书写高效的SQL语句 长沙做网站公司在应用开发中,书写SQL语句是最基本的工作,但我们往往在这方面侧重的是功能的实现,很容易把效率问题给忽略了,在随着系统数据的不断增加,可能有些低效的SQL语句会让客户感觉系统反映缓慢,甚至还有可能会因长时间执行不出结果而报超时或其它系统错误,所以我们要养成一个良好的编码习惯,不仅要实现其功能,而且要尽可能的提高效率. 下面内容是在网络上收集的一些比较典型实用的优化点,以及在工作中用到的典型样例,供大家参考学习. 1.注意UNion和UNion all 的区

转:sql语句优化

性能不理想的系统中除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的是因为系统存在大量的SQL语句需要优化. 为了获得稳定的执行性能,SQL语句越简单越好.对复杂的SQL语句,要设法对之进行简化. 常见的简化规则如下: 1)不要有超过5个以上的表连接(JOIN)2)考虑使用临时表或表变量存放中间结果.3)少用子查询4)视图嵌套不要过深,一般视图嵌套不要超过2个为宜. 连接的表越多,其编译的时间和连接的开销也越大,性能越不好控制. 最好是把连接拆开成较小的几个部分逐个顺序执行.

Entity FrameWork 5 增删改查 &amp; 直接调用sql语句 ?

#region 1.0 新增 -void Add() /// <summary> /// 1.0 新增 /// </summary> static void Add() { //1.1创建实体对象 User uObj = new User() { uName = "刘德华", uLoginName = "aaa", uPwd = "asdfasdfasdfsadf", uIsDel = false, uAddtime =

SQL语句优化原则

性能不理想的系统中除了一部分是因为应用程序的负载确实超过了服务器的实际处理能力外,更多的是因为系统存在大量的SQL语句需要优化. 为了获得稳定的执行性能,SQL语句越简单越好.对复杂的SQL语句,要设法对之进行简化. 常见的简化规则如下: 1)不要有超过5个以上的表连接(JOIN)2)考虑使用临时表或表变量存放中间结果.3)少用子查询4)视图嵌套不要过深,一般视图嵌套不要超过2个为宜. 连接的表越多,其编译的时间和连接的开销也越大,性能越不好控制. 最好是把连接拆开成较小的几个部分逐个顺序执行.