博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
JDBC的批处理
阅读量:7108 次
发布时间:2019-06-28

本文共 3722 字,大约阅读时间需要 12 分钟。

 

JDBC的批处理:

    1)批处理:一次性处理很多数据。

  解释:有时候需要向数据库发送一批sql语句执行,这时应避免向数据库一条条的发送执行,

   而应采用JDBC的批处理机制,以提升执行效率。

    2)两种方式:
      Statement :                  //Statement stat=conn.createStatement();创建语句
        stat.addBatch(sql):将sql填入缓冲区,进行编译。
        stat.executeBatch():将缓冲区中的数据一次性执行。
      PreparedStatement:    //PreparedStatement ps=conn.prepareStatement(sql);
        ps.addBatch():将参数放入占位符?存入缓存区。
        ps.executeBatch()::将缓存区中的数据一次性执行。
    3)案例:
      向表bank_money插入1070条数据。

 

1)@Test    public void testStatement() {        Connection conn=null;        try {            conn= DBUtil2.getconn();            Statement stat=conn.createStatement();            long l1=System.currentTimeMillis();            for(int i=10;i<1080;i++) {                String sql="insert into login_info                            values("+i+",'zs','111111')";                 stat.addBatch(sql);                  //将sql填入缓冲区,进行编译。                           stat.executeQuery(sql);            }            stat.executeBatch();//:将缓冲区中的数据一次性执行。            long l2=System.currentTimeMillis();            System.out.println(l2-l1);        } catch (Exception e) {            e.printStackTrace();        }    }       2)@Test    public void testPreparedStatement() {        Connection conn=null;        try {            conn=DBUtil2.getconn();            String sql="insert into login_info values(?,?,?)";            PreparedStatement ps=conn.prepareStatement(sql);            long l1=System.currentTimeMillis();            for(int i=10;i<1080;i++) {                ps.setInt(1, i);                ps.setString(2, "zs");                ps.setString(3, "111111");                ps.addBatch();// 将参数放入占位符?存入缓存区                if(i%100==0) {                    ps.executeBatch();//每100次将 将缓存区中的数据一次性执行。,                }            }            ps.executeBatch();//将缓冲区数据一次性执行            long l2=System.currentTimeMillis();            System.out.println(l2-l1);        } catch (Exception e) {            e.printStackTrace();        }finally {            DBUtil2.colseconn(conn);        }    }  3)    public class DBUtil2 {    private static String driver;    private static String url;    private static String user;    private static String pwd;    /**读取配置文件,只需要加载一次*/    static {        try {
//从db文件读取出来内容 /*文件字符流:默认当前文件路径在工程名下。 * "db.properties" * :通过当前类的类加载器所获取的流读取配置文件 */ FileReader fr=new FileReader("db.properties"); Properties prop=new Properties(); prop.load(fr); driver=prop.getProperty("driver"); url=prop.getProperty("url"); user=prop.getProperty("user"); pwd=prop.getProperty("pwd"); Class.forName(driver);//1加载驱动 } catch (Exception e) { e.printStackTrace(); /* "db.properties: driver=oracle.jdbc.driver.OracleDriver #driver=oracle.jdbc.OracleDriver url=jdbc:oracle:thin:@localhost:1521:orcl user=scott pwd=1234 * */ } } public static Connection getconn() {
//2.建立连接 Connection conn=null; try { conn = DriverManager.getConnection( url, user, pwd); } catch (Exception e) { e.printStackTrace(); } return conn; } public static void colseconn(Connection conn) { try { if(conn!=null) { conn.close(); } } catch (Exception e) { e.printStackTrace(); } } public static void main(String[] args) { System.out.println(getconn());//返回连接对象 }}

 

转载于:https://www.cnblogs.com/xiaozelulu/p/8660272.html

你可能感兴趣的文章
Nginx的https配置记录以及http强制跳转到https的方法梳理
查看>>
android图像处理系列之三--图片色调饱和度、色相、亮度处理
查看>>
TensorFlow学习路径【转】
查看>>
JAVA设计模式之单例模式
查看>>
Ansible@一个高效的配置管理工具--Ansible configure management--翻译(五)
查看>>
第三章 Spring.Net 环境准备和搭建
查看>>
< meta http-equiv = "X-UA-Compatible" content = "IE=edge,chrome=1" />的意义
查看>>
java的PrintStream(打印输出流)详解(java_io)
查看>>
php杂项函数
查看>>
图片资源网站
查看>>
json_decode 为空
查看>>
[PHP] 算法-构建排除当前元素的乘积数组的PHP实现
查看>>
实现:支付宝手机密码支付功能
查看>>
为啥百度、网易、小米都用Python?Python的用途是什么?
查看>>
Linux系统IO分析工具之iotop常用参数介绍
查看>>
软件的依赖关系:类图关系:is-a has-a use-a
查看>>
2010年美国计算机图书市场报告四:编程语言
查看>>
ME525+ MB525 android2.3.4获取ROOT权限和关闭震动(振动反馈)的方法分享
查看>>
C函数适配器
查看>>
bitrock 他家有绝活
查看>>