`
gmleegmlee
  • 浏览: 116775 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java 数据库 Connection 事务

    博客分类:
  • JAVA
阅读更多
 public void deleteDeadDataImprove(String tableName, long updateTime) throws Exception
    {
        // 根据报表源判断是sql
        if(connGrpForDel == null)
        {
            logger.error("connGrpForDel is not initialized.");
            throw new Exception("connGrpForDel is not initialized.");
        }
        Connection connection = null;
        synchronized(this)
        {
            connection = this.connGrpForDel.getActiveConnection();
            threadLocal.set(new Long(batchNo));
            logger.debug(Thread.currentThread().getName() + "ok," + "threadLocal.get()=" + threadLocal.get() + ",batchNo=" + batchNo);
        }
        String sql = "";
//        Statement pstmt = null;
        PreparedStatement pstmt = null;
        try
        {
            connection.setAutoCommit(false);

            // 删除主键和索引
            String dbType = DBConnectionParams.getDatabaseType();
            if(CommonAttrs.DATABASE_TYPE_ORACLE.equals(dbType))
            {
                sql = "drop index I" + tableName;
            }
            else if(CommonAttrs.DATABASE_TYPE_SQLSERVER.equals(dbType))
            {
                sql = "drop index " + tableName + ".I" + tableName;
            }
            logger.info("sql=" + sql);
            if(sql != null && sql.length() > 0)
            {
//                pstmt = connection.createStatement();
//                pstmt.executeUpdate(sql);
                pstmt = connection.prepareStatement(sql);
                pstmt.executeUpdate();
            }
            // 批量删除数据
            // boolean status = true;
            sql = "delete from " + tableName + " where timestamp <= " + updateTime;// + " and rownum <= " + countOneBatchDel;
            logger.debug("sql=" + sql);
            // while(status)
            // {
//            int deleteCount = pstmt.executeUpdate(sql);
            pstmt = connection.prepareStatement(sql);
            int deleteCount = pstmt.executeUpdate();
            logger.info("Remove " + deleteCount +" expired records from " + tableName + " table");
            // 分批删,但一次性提交
            // if(deleteCount <= 0)
            // {
            // status = false;
            // }
            // }
            // 创建主键和索引
            sql = "create index I" + tableName + " on " + tableName + "(timestamp ASC, entityId)";
            logger.info("sql=" + sql);
//            pstmt.executeUpdate(sql);
            pstmt = connection.prepareStatement(sql);
            pstmt.executeUpdate();
            connection.commit();
        }
        catch(SQLException e)
        {
            logger.error("SQLException when deleteDeadDataImprove.", e);
            connection.rollback();
        }
        finally
        {

            if(pstmt != null)
            {
                pstmt.close();
                pstmt = null;
            }
            if(!connection.isClosed())
            {
                // 存储结束后,将数据存储自动提交置为true,需要手动提交时再修改为false
                connection.setAutoCommit(true);
                // 释放connection
                this.connGrpForDel.realseConnection(connection);
            }
            else
            {
                // 如果是connection被关闭了,重新初始化数据池
                reInitialize();
            }

        }

    }


分享到:
评论

相关推荐

    关于java数据库基本操作

    1、java数据库操作基本流程2、几个常用的重要技巧:·可滚动、更新的记录集·批量更新·事务处理java数据库操作基本流程:取得数据库连接-执行sql语句-处理执行结果-释放数据库连接l、取得数据库连接1)用DriverManager...

    Java数据库编程宝典3

    4.7.2 Connection对象 4.8 SQL语句 4.8.1 Statement对象 4.8.2 PreparedStatement语句 4.8.3 CallableStatement 4.9 事务 4.9.1 事务独立性等级 4.9.2 事务存储点 4.9.3 多线程 4.10 批更新 4.11 ...

    Java数据库接口JDBC介绍

    目录 前言 1 参考资料 1 第1章 JDBC概述 2 1.1 JDBC用途 2 第2章 主要调用对象接口介绍 2 2.1 connection对象 2 2.1.1 DriverManager.getConnection方法 3 2.1.2 URL说明 3 ...第3章 常用数据库JDBC写法 10

    Java数据库编程宝典2

    4.7.2 Connection对象 4.8 SQL语句 4.8.1 Statement对象 4.8.2 PreparedStatement语句 4.8.3 CallableStatement 4.9 事务 4.9.1 事务独立性等级 4.9.2 事务存储点 4.9.3 多线程 4.10 批更新 4.11 ...

    Java数据库编程宝典1

    4.7.2 Connection对象 4.8 SQL语句 4.8.1 Statement对象 4.8.2 PreparedStatement语句 4.8.3 CallableStatement 4.9 事务 4.9.1 事务独立性等级 4.9.2 事务存储点 4.9.3 多线程 4.10 批更新 4.11 ...

    Java数据库编程宝典4

    4.7.2 Connection对象 4.8 SQL语句 4.8.1 Statement对象 4.8.2 PreparedStatement语句 4.8.3 CallableStatement 4.9 事务 4.9.1 事务独立性等级 4.9.2 事务存储点 4.9.3 多线程 4.10 批更新 4.11 ...

    Hibernate_3.2.0_符合Java习惯的关系数据库持久化

    HIBERNATE - 符合Java习惯的关系数据库持久化 Hibernate参考文档 3.2 -------------------------------------------------------------------------------- 目录 前言 1. 翻译说明 2. 版权声明 1. Hibernate...

    JDBC 3.0数据库开发与设计

    2.2.5 Java连接各类数据库的程序代码 2.3 Web应用服务器 2.3.1 Tomcat的安装及系统文件设置 2.3.2 WebSphere简介 2.3.3 WebLogic的安装和配置 2.3.4 Resin的安装与配置 2.4 Java开发环境 2.4.1 JDK设置 ...

    基于韩顺平老师数据库完结和jdbc完结

    JDBC程序中当一个Connection对象创建时,默认情况下是自动提交事务:每次执行一个SQL语句时,如果执行成功,就会向数据库自动提交,而不能回滚。JDBC程序中为了让多个SQL语句作为一个整体执行,需要使用事务。

    2014_05_12 javabean类型的辅助类存储传输接收数据.

    java.sql.PreparedStatement psta=null; //连接jdbc驱动,获取连接对象(connection) try { //先写好sql语句 String sqlstr="delete from test_user where username=?"; //生成statement...

    mySQL事务处理

    现在innoDB支持 事务了, 上述的 java 代码是否能实现 以下的 事务隔离的 操作, 在修改的时候处于锁定状态 或者 只可以通过存储过程来实现, 单行的锁定 BEGIN; SELECT book_number FROM book WHERE book_id = ...

    MySQL数据库

    ####Statement和PreparedStatement - PreparedStatement预编译的SQL执行对象 1. 可以避免SQL注入 因为在编译的时候已经把SQL的逻辑固定,不会因为替换进去...- 元数据指 数据库和表的相关信息 - 代码参见 Demo10.java

    利用hibernate+spring配置proxool连接池连接Access数据库

    (ProxyConnection.java:195) - #0001 encountered errors during destruction: java.sql.SQLException: [Microsoft][ODBC Microsoft Access Driver]非法的事务状态 修改后的proxool的jar包完全支持Access数据库,...

    jdbc连接数据库的方式2

    MySQL目前提供的java驱动程序为Connection/J,可以从MySQL官方网站下载,并找到mysql-connector-java-3.0.15-ga-bin.jar文件,此驱动程序为纯java驱动程序,不需做其他配置。 2、动态指定classpath 如果需要执行...

    JDBC笔记 JDBC笔记

    java.sql.Connection 与特定数据库的连接(会话)。能够通过getMetaData方法获得数据库提供的信息、所支持的SQL语法、存储过程和此连接的功能等信息。代表了数据库。 java.sql.Driver 每个驱动程序类必需实现的...

    java开发中的一些常用小技巧

    3在使用数据库操作的时候尽量多用finally语句,进行资源的释放。 try{}catch(Exception e){} finally{if(conn!=null){conn.colse();conn==null}} 4事务的处理 a关闭Connection的自动提交connn.setAutoCommit; b...

    2013java面试题搜集

    2、那说说数据库连接池的原理 3、Java的内存管理机制是什么 4、Javascript中怎么实现继承?有几种方式? 5、spring底层用什么实现? 6、hibernate和Jdbc的区别 7、Hibernate与Ibatis的区别 8、Struts2和1的...

Global site tag (gtag.js) - Google Analytics