吴裕雄--天生自然JAVA数据库编程:事务处理

DROP TABLE user ;    -- 删除表
CREATE TABLE user(
    id        INT        AUTO_INCREMENT PRIMARY KEY ,
    name        VARCHAR(30)    NOT NULL ,
    password     VARCHAR(32)    NOT NULL ,
    age        INT        NOT NULL ,
    sex        VARCHAR(2)    DEFAULT '男' ,
    birthday    DATE 
) ;

INSERT INTO user(name,password,age,sex,birthday) VALUES ('李康','www.mldnjava.cn',23,'女','2003-08-27') ;
import java.sql.Connection ;
import java.sql.DriverManager ;
import java.sql.SQLException ;
import java.sql.Statement ;
public class TranDemo01{
    // 定义MySQL的数据库驱动程序
    public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
    // 定义MySQL数据库的连接地址
    public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;
    // MySQL数据库的连接用户名
    public static final String DBUSER = "root" ;
    // MySQL数据库的连接密码
    public static final String DBPASS = "mysqladmin" ;
    public static void main(String args[]) throws Exception{    // 所有异常抛出
        Connection conn = null ;        // 数据库连接
        Statement stmt = null ;        // 定义数据库操作
        Class.forName(DBDRIVER) ;    // 加载驱动程序
        conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;
        stmt = conn.createStatement() ;
        stmt.addBatch("INSERT INTO user(name,password,age,sex,birthday)" +
            " VALUES ('LXH-1','hello-1',11,'男','1975-03-05') ") ;
        stmt.addBatch("INSERT INTO user(name,password,age,sex,birthday)" +
            " VALUES ('LXH-2','hello-2',12,'女','1976-03-05') ") ;
        // 加入“'”之后,此SQL语法就出现了错误,所以,肯定执行到此语句的时候出现代码错误
        stmt.addBatch("INSERT INTO user(name,password,age,sex,birthday)" +
            " VALUES ('LXH-'3','hello-3',13,'男','1977-06-01') ") ;
        stmt.addBatch("INSERT INTO user(name,password,age,sex,birthday)" +
            " VALUES ('LXH-4','hello-4',14,'女','1965-03-05') ") ;
        stmt.addBatch("INSERT INTO user(name,password,age,sex,birthday)" +
            " VALUES ('LXH-5','hello-5',15,'女','1965-08-05') ") ;
        int temp[] = stmt.executeBatch() ;
        System.out.println("更新了:" + temp.length+ "条数据。") ;
        stmt.close() ;
        conn.close() ;            // 数据库关闭
    }
};
import java.sql.Connection ;
import java.sql.DriverManager ;
import java.sql.SQLException ;
import java.sql.Statement ;
public class TranDemo02{
    // 定义MySQL的数据库驱动程序
    public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
    // 定义MySQL数据库的连接地址
    public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;
    // MySQL数据库的连接用户名
    public static final String DBUSER = "root" ;
    // MySQL数据库的连接密码
    public static final String DBPASS = "mysqladmin" ;
    public static void main(String args[]) throws Exception{    // 所有异常抛出
        Connection conn = null ;        // 数据库连接
        Statement stmt = null ;        // 定义数据库操作
        Class.forName(DBDRIVER) ;    // 加载驱动程序
        conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;

        conn.setAutoCommit(false) ;    // 取消掉自动提交

        stmt = conn.createStatement() ;
        stmt.addBatch("INSERT INTO user(name,password,age,sex,birthday)" +
            " VALUES ('LXH-1','hello-1',11,'男','1975-03-05') ") ;
        stmt.addBatch("INSERT INTO user(name,password,age,sex,birthday)" +
            " VALUES ('LXH-2','hello-2',12,'女','1976-03-05') ") ;
        // 加入“'”之后,此SQL语法就出现了错误,所以,肯定执行到此语句的时候出现代码错误
        stmt.addBatch("INSERT INTO user(name,password,age,sex,birthday)" +
            " VALUES ('LXH-'3','hello-3',13,'男','1977-06-01') ") ;
        stmt.addBatch("INSERT INTO user(name,password,age,sex,birthday)" +
            " VALUES ('LXH-4','hello-4',14,'女','1965-03-05') ") ;
        stmt.addBatch("INSERT INTO user(name,password,age,sex,birthday)" +
            " VALUES ('LXH-5','hello-5',15,'女','1965-08-05') ") ;
        try{
            int temp[] = stmt.executeBatch() ;
            System.out.println("更新了:" + temp.length+ "条数据。") ;
            conn.commit() ;    // 所有的操作成功了
        }catch(Exception e){
            try{
                conn.rollback() ;
            }catch(Exception e1){
                
            }
        }
        stmt.close() ;
        conn.close() ;            // 数据库关闭
    }
};
import java.sql.Connection ;
import java.sql.DriverManager ;
import java.sql.SQLException ;
import java.sql.Statement ;
import java.sql.Savepoint ;
public class TranDemo03{
    // 定义MySQL的数据库驱动程序
    public static final String DBDRIVER = "org.gjt.mm.mysql.Driver" ;
    // 定义MySQL数据库的连接地址
    public static final String DBURL = "jdbc:mysql://localhost:3306/mldn" ;
    // MySQL数据库的连接用户名
    public static final String DBUSER = "root" ;
    // MySQL数据库的连接密码
    public static final String DBPASS = "mysqladmin" ;
    public static void main(String args[]) throws Exception{    // 所有异常抛出
        Connection conn = null ;        // 数据库连接
        Statement stmt = null ;        // 定义数据库操作
        Class.forName(DBDRIVER) ;    // 加载驱动程序
        conn = DriverManager.getConnection(DBURL,DBUSER,DBPASS) ;

        conn.setAutoCommit(false) ;    // 取消掉自动提交

        stmt = conn.createStatement() ;
        stmt.executeUpdate("INSERT INTO user(name,password,age,sex,birthday)" +
            " VALUES ('LXH-1','hello-1',11,'男','1975-03-05') ") ;
        stmt.executeUpdate("INSERT INTO user(name,password,age,sex,birthday)" +
            " VALUES ('LXH-2','hello-2',12,'女','1976-03-05') ") ;
        Savepoint sp = conn.setSavepoint() ;        // 设置保存点
        
        stmt.executeUpdate("INSERT INTO user(name,password,age,sex,birthday)" +
            " VALUES ('LXH-4','hello-4',14,'女','1965-03-05') ") ;
        stmt.executeUpdate("INSERT INTO user(name,password,age,sex,birthday)" +
            " VALUES ('LXH-5','hello-5',15,'女','1965-08-05') ") ;
        try{
            conn.rollback(sp) ;    // 回滚到保存点
            conn.commit() ;    // 所有的操作成功了
        }catch(Exception e){
            e.printStackTrace() ;
        }
        stmt.close() ;
        conn.close() ;            // 数据库关闭
    }
};

猜你喜欢

转载自www.cnblogs.com/tszr/p/12158912.html