`

批处理语句,自动事务提交

阅读更多
package JDBC;

import java.sql.BatchUpdateException;
import java.sql.Connection;
import java.sql.Date;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.DriverManager;
import java.sql.Statement;
import java.sql.Time;
import java.sql.Timestamp;
import java.text.SimpleDateFormat;
import java.util.Calendar;
/** *//**
 * 
 * 
@author oakertree
 *
 
*/

public class TestTransaction {
    
public static void main(String[] args) {
        Connection con 
= null;
        Statement stmt 
= null;
//        PreparedStatement stmt = null;
        
        
try {
            Class.forName(
"com.mysql.jdbc.Driver");
//            new com.mysql.jdbc.Driver();
            con = DriverManager.getConnection("jdbc:mysql://localhost:3307/test""root""admini");
            
            con.setAutoCommit(
false);
            
            stmt 
= con.createStatement();
            stmt.addBatch(
"INSERT INTO time VALUES ( NOW(), NOW(), NOW())");
            stmt.addBatch(
"INSERT INTO time VALUES ( NOW(), NOW(), NOW())");
            stmt.addBatch(
"INSERT INTO time VALUES ( NOW(), NOW(), NOW())");
            stmt.addBatch(
"INSERT INTO time VALUES ( NOW(), NOW(), NOW())");
            stmt.addBatch(
"INSERT INTO time VALUES ( NOW(), NOW(), NOW())");
            stmt.addBatch(
"INSERT INTO time VALUES ( NOW(), NOW(), NOW())");
            stmt.executeBatch();
            
            con.commit();
            con.setAutoCommit(
true);
            
            stmt.close();
            
/**//*
            System.out.println(Date.valueOf("2004-02-19"));
            System.out.println(Time.valueOf("14:29:32"));
            System.out.println(Timestamp.valueOf("2008-12-01 12:25:32"));
            
            
            stmt = con.prepareStatement("INSERT INTO time VALUES (?, ?, ?)");
            stmt.setDate(1, Date.valueOf("2004-12-02"));
            stmt.setTime(2, Time.valueOf("14:02:32"));
            stmt.setTimestamp(3, Timestamp.valueOf("2004-12-01 12:25:32"));
            stmt.addBatch();
            
            stmt.setDate(1, Date.valueOf("2005-12-02"));
            stmt.setTime(2, Time.valueOf("15:02:32"));
            stmt.setTimestamp(3, Timestamp.valueOf("2005-12-01 12:25:32"));
            stmt.addBatch();
            
            stmt.setDate(1, Date.valueOf("2006-12-02"));
            stmt.setTime(2, Time.valueOf("16:02:32"));
            stmt.setTimestamp(3, Timestamp.valueOf("2006-12-01 12:25:32"));
            stmt.addBatch();
            
            stmt.setDate(1, Date.valueOf("2007-12-02"));
            stmt.setTime(2, Time.valueOf("17:02:32"));
            stmt.setTimestamp(3, Timestamp.valueOf("2007-12-01 12:25:32"));
            stmt.addBatch();
            
            stmt.executeBatch();
            stmt.close();
            
*/

            
            }
 catch (ClassNotFoundException e) {
                e.printStackTrace();
            }
 catch (BatchUpdateException e) {
                e.printStackTrace();
            }
 catch (SQLException e) {
                e.printStackTrace();
                
try {
                    
if(con != null{
                        con.rollback();
                        con.setAutoCommit(
true);
                    }

                }
 catch(SQLException ie) {
                    ie.printStackTrace();
                }

            }
 finally {
                
try {
                    
if(stmt != null{
                        stmt.close();
                        stmt 
= null;
                    }

                    
if(con != null{
                        con.close();
                        con 
= null;
                    }

                }
 catch (SQLException e) {
                    e.printStackTrace();
                }

            }

    }

}

/**//*
+------------+----------+---------------------+
| date       | time     | datetime            |
+------------+----------+---------------------+
| 2007-10-16 | 01:01:17 | 2007-10-16 01:01:17 |
| 2007-10-17 | 01:02:22 | 2006-05-12 00:00:00 |
| 2007-12-19 | 00:13:04 | 2007-12-19 00:13:04 |
| 2007-12-22 | 14:13:48 | 2007-12-22 14:13:48 |
| 2007-12-22 | 14:14:52 | 2007-12-22 14:14:52 |
| 2007-12-22 | 14:14:52 | 2007-12-22 14:14:52 |
| 2007-12-22 | 14:14:52 | 2007-12-22 14:14:52 |
| 2007-12-22 | 14:14:52 | 2007-12-22 14:14:52 |
| 2007-12-22 | 14:14:52 | 2007-12-22 14:14:52 |
| 2007-12-22 | 14:14:52 | 2007-12-22 14:14:52 |
| 2004-12-02 | 14:02:32 | 2004-12-01 12:25:32 |
| 2005-12-02 | 15:02:32 | 2005-12-01 12:25:32 |
| 2006-12-02 | 16:02:32 | 2006-12-01 12:25:32 |
| 2007-12-02 | 17:02:32 | 2007-12-01 12:25:32 |
+------------+----------+---------------------+
*/

分享到:
评论

相关推荐

    oracle数据库自动恢复数据库批处理

    标题中的“Oracle数据库自动恢复数据库批处理”是指在Oracle数据库管理系统中,通过预先设定的脚本或批处理程序实现数据库的自动恢复。这通常涉及到数据库的备份、日志管理、故障检测以及数据恢复等关键环节,是...

    数据库文献

    SQL-Sever数据库根据运行模式将事务分为4种类型:自动提交事务、显示事务、隐式事务和批处理级事务。1. 自动提交事务:是指每条单独的语句都是一个事务;2. 显式事务:是指每个事务均以BEGIN TRANSACTION语句显式...

    使用JDBC的批处理功能

    1. 创建Connection对象,设置自动提交为false,以便控制事务。 ```java Connection conn = DriverManager.getConnection(url, user, password); conn.setAutoCommit(false); ``` 2. 创建Statement或...

    批处理执行sql脚本

    在SQL语句中,批处理指的是将多个SQL命令写入一个文本文件,然后一次性提交给数据库执行。这种方式适用于创建数据库结构、导入数据、执行数据更新或清理等任务。例如,`sql.sql`文件可能包含了创建表、插入数据、...

    jdbc 批处理.rar

    为了启用批处理,你需要调用`setAutoCommit(false)`来禁用自动提交,因为默认情况下,每个SQL语句都会被单独提交。 2. **添加批处理命令**:你可以使用`addBatch()`方法将一个或多个SQL语句(或者参数集)添加到...

    oracle批处理文件

    在批处理中,一次性执行大量操作可能导致大量的回滚段使用和长时间的锁定,因此通常会设置批量提交,即执行一定数量的SQL语句后才提交一次事务。例如,使用`WHENEVER OSERROR EXIT`和`WHENEVER SQLERROR EXIT ...

    关于hibernate的批处理

    2. **Hibernate批处理设置**: Hibernate通过`hibernate.jdbc.batch_size`配置属性来设定批处理大小,例如设置为20表示每次提交20个SQL语句。默认值通常较小,需要根据实际需求进行调整。 3. **Flush模式**: ...

    批处理对数据库的应用

    - 在SQL语句中,可以通过使用事务来实现批处理。例如,在开始处理前开启一个事务,然后执行一系列的操作,最后通过`COMMIT`命令提交更改或通过`ROLLBACK`命令撤销所有更改。 - 使用存储过程也可以实现批处理功能,...

    JDBC进行批处理共4页.pdf.zip

    必要时,使用Connection对象的`setAutoCommit(false)`关闭自动提交,并在批处理完成后手动提交或回滚。 3. **异常处理**:在执行批处理时,务必捕获并处理SQLException,避免因单个错误导致整个批处理失败。 批处理...

    jdbc 增删改查事物处理, 批处理,以及预编译示例代码

    在Java数据库连接(JDBC)中,增删改查(CRUD)操作是与数据库交互的基础,事务处理、批处理和预编译SQL语句则是提高效率和保证数据一致性的关键技术。以下是对这些概念的详细说明: 1. **JDBC增删改查(CRUD)**:...

    Sql Server数据库事务浅析.pdf

    在事务提交前,所有数据操作都是临时的。 6. 事务编写注意事项:编写事务时需要注意事务锁定数据的机制,以及事务日志的创建和管理。未提交的事务中所有操作都是临时的,一旦事务回滚这些操作不会对数据库产生持久...

    JdbcTemplate的事务控制.docx

    接下来,可以执行多个SQL语句并添加到批处理中,最后调用`executeBatch()`方法来一次性执行所有SQL语句。如果这些操作成功,则通过`commit()`方法将更改保存到数据库;如果发生异常,则调用`rollback()`方法撤销所有...

    事务与触发器课件.ppt

    自动事务模式下,SQL Server会在每个语句成功执行后自动提交,错误则回滚。在批处理中,如果一个语句出错,整个批处理都不会执行。 事务处理语句包括`BEGIN TRANSACTION`(开始事务)、`COMMIT TRANSACTION`(提交...

    MySQL_4_JDBC高级操作和事务1

    - **持久性(Durability)**:一旦事务提交,其结果就是永久的,即使系统崩溃也不会丢失。 在JDBC中,你可以通过以下方式控制事务: - 开启事务:`conn.setAutoCommit(false);` - 提交事务:`conn.commit();` - ...

    java 批处理的资源

    - **JDBC批处理**:通过设置批处理边界,一次性提交多条SQL语句,减少数据库交互次数。 - **Java 8 Stream API**:处理大量数据时,Stream API提供了一种高效且易读的编程方式。 6. **Batch.java文件可能的内容**...

    SQL数据库事务处理

    - **持久性(Durability)**:一旦事务提交,其对数据库的改变将是永久的,即使系统出现故障也不会丢失。 #### 二、事务的不同模式 在 SQL Server 中,事务有不同的运行模式: 1. **自动提交事务**:默认情况下,...

    事务三种方式

    一旦SQL语句执行成功,数据库系统会自动提交这些更改,而无需程序员进行额外的代码处理。这种方式简单易用,但可能无法满足复杂的业务逻辑需求,因为每个操作都立即生效,没有机会进行回滚或批处理。 其次,**显式...

    jdbc连接数据库

    4. 设置合适的批处理大小:根据具体场景调整批处理语句的数量。 总结,JDBC是Java开发中的重要组成部分,掌握其核心概念和使用技巧对进行数据库操作至关重要。通过不断实践和优化,可以编写出高效、稳定的数据库...

    浅析Oracle和Microsoft SQL Server事务处理的异同.pdf

    如果执行了DDL(Data Definition Language)语句,那么在DDL语句执行前后都会自动提交事务。 - SQL Server中的行为类似,但是用户可以使用GO命令来标记批处理之间的边界,GO不是T-SQL语句,它是一个批处理终止符,...

    数据库原理与运用(数据库完整性控制与并发)

    运行模式上,有自动提交事务(每个SQL语句自动构成一个事务),显示事务(通过BEGIN/COMMIT/ROLLBACK显式控制),隐式事务(前一个事务结束后自动开始新事务),以及批处理事务(在MARS会话中,多条SQL语句作为一个...

Global site tag (gtag.js) - Google Analytics