`
gmleegmlee
  • 浏览: 119760 次
  • 性别: 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数据库驱动jar包

    总的来说,Java数据库驱动为Java开发者提供了强大的数据库访问能力,无论是在简单的CRUD操作还是复杂的事务处理中。理解并正确使用这些驱动,能够极大地提升应用程序的性能和可靠性。在使用过程中,务必确保驱动版本...

    java数据库驱动包

    Java数据库驱动包是Java应用程序与各种数据库之间进行通信的关键组件。在Java中,JDBC(Java Database Connectivity)是一个标准API,允许程序员用Java语言来访问和处理存储在各种数据库中的数据。这个压缩包包含了...

    java数据库应用程序编程指南

    14. **性能优化**:了解索引、查询优化、事务粒度调整、连接池配置等技巧,可以显著提升Java数据库应用程序的性能。 以上就是“Java数据库应用程序编程指南”中可能涵盖的主要知识点,学习和熟练掌握这些内容,对于...

    【经典】Java数据库编程 JAVA跟数据库连接源代码

    综上所述,Java数据库编程涵盖的内容广泛,从基础的数据库连接到高级的事务处理和性能优化。掌握这些知识点,对于Java开发者来说至关重要,能够有效地实现与数据库的交互,开发出高效、稳定的数据库应用。通过实践和...

    Java数据库连接Java数据库连接.ppt

    Java数据库连接 Java数据库连接是 Java 编程语言中连接数据库的方式。Java 数据库连接可以分为两个部分:数据库连接和数据库访问。 数据库连接是指 Java 程序与数据库之间的连接,通过 JDBC(Java DataBase ...

    Java数据库技术详解

    Java数据库技术是Java开发中的重要组成部分,主要用于存储和管理数据。在Java中,与数据库交互主要依赖于Java Database Connectivity (JDBC) API。本资源包提供了详细的Java数据库技术讲解,包括PPT演示文稿、源代码...

    java数据库开发实例教案

    本教程“Java数据库开发实例教案”提供了8个实战案例,涵盖了Java与数据库交互的各个方面,旨在帮助学习者深入理解并熟练掌握相关技术。 首先,Java通过JDBC(Java Database Connectivity)API与各种类型的数据库...

    Java 数据库操作大全

    在"Java数据库操作代码精粹"中,你可能会找到这些概念的实际应用示例,包括CRUD(创建、读取、更新、删除)操作,以及更复杂的查询和事务处理。通过这些实例,初学者可以快速上手,理解数据库操作的整个流程。同时,...

    Java数据库编程案例2

    总之,Java数据库编程是一个关键技能,涵盖了数据库连接、SQL执行、结果集处理、事务管理和连接池等多个方面。通过学习和实践"Java数据库编程案例2"中的内容,开发者可以熟练地在Java应用程序中进行数据库操作,提升...

    java连接数据库 java 数据库连接 数据库 java连接

    在Java编程语言中,连接数据库是一项基础且至关重要的任务,特别是在构建服务器端应用程序时。Java提供了多种方式来实现这一目标,主要通过Java Database Connectivity (JDBC) API。JDBC是Java平台的一个标准接口,...

    java数据库编程_代码

    Java数据库编程是开发应用程序时不可或缺的一部分,特别是在处理数据存储和检索时。本资源"java数据库编程_代码"针对初学者提供了宝贵的实践素材,涵盖了数据库的基本操作,如插入、删除、查询和修改数据。以下是...

    Java数据库技术详解PPT

    总的来说,Java数据库技术包括了JDBC的基本操作、高级ORM框架的使用、事务管理以及数据库优化策略。理解并熟练掌握这些知识对于Java开发人员来说至关重要,能够帮助他们构建高效、可靠的数据库驱动的应用程序。

    JAVA数据库-数据库集合

    ### JAVA数据库-数据库集合 #### Java数据库编程简介 在Java中,通过JDBC(Java Database Connectivity)接口可以实现与各种关系型数据库的连接与交互。JDBC提供了一套标准的API,允许开发者在Java应用中执行SQL...

    Java数据库应用程序编程指南数据库脚本

    总之,Java数据库应用程序编程涉及众多方面,从基础的JDBC连接到复杂的SQL脚本编写,再到数据库设计、事务管理和安全策略。理解并熟练掌握这些知识点,将使你能够有效地开发和维护高质量的Java数据库应用。

    Java数据库编程实例

    本篇将深入探讨Java数据库编程的实例,主要关注如何使用Java与各种数据库进行交互。我们将会涵盖JDBC(Java Database Connectivity)API的基础知识,包括连接数据库、执行SQL语句、处理结果集以及事务管理。 首先,...

    《Java数据库编程宝典》

    根据提供的标题、描述以及部分上下文内容,我们可以推断出这份文档主要关注的是关于Java数据库编程的相关知识。尽管文档中的大部分内容与一个特定的学习群及其提供的资源有关,但基于这些信息,我们可以围绕“Java...

    java数据库系统开发实例导航源码

    在Java数据库系统开发中,实例导航源码是一种非常宝贵的学习资源,它可以帮助开发者深入理解如何在实际项目中应用Java与数据库交互的技术。本资源“java数据库系统开发实例导航源码”提供了一种按章节组织的学习路径...

    Java数据库编程宝典

    《Java数据库编程宝典》是一本专为Java开发者设计的深度学习数据库编程的教程,旨在帮助读者提升在数据库领域的技能,实现高效、稳定的数据库应用程序开发。本书覆盖了从基础概念到高级技术,全面讲解了Java如何与...

Global site tag (gtag.js) - Google Analytics