zoukankan      html  css  js  c++  java
  • JDBC--事务性

    1. 成功操作的示例

    执行操作前

    package com.machuang.jdbc;
    
    /**
     * 测试 事务性
     */
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    
    public class Demo06 {
    
        public static void main(String[] args) {
            
            Connection conn = null;
            PreparedStatement ps1 = null;
            PreparedStatement ps2 = null;
            try {
                // 加载mysql驱动
                Class.forName("com.mysql.jdbc.Driver");
                // 连接数据库
                conn = DriverManager.getConnection(
                                    "jdbc:mysql://localhost:3306/testjdbc","root","333666");
                
                // ps1 和 ps2 在一个提交之间,所以时一个事务
                conn.setAutoCommit(false);    // 设置事务手动提交
                
                ps1 = conn.prepareStatement("insert into t_usr (usrName, pwd) value(?, ?)");
                ps1.setObject(1, "小明");
                ps1.setObject(2, "646468");
                ps1.execute();
                System.out.println("插入一条记录,小明");
                
                try {
                    Thread.sleep(500);        // 线程休眠 500ms
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                
                ps2 = conn.prepareStatement("insert into t_usr (usrName, pwd) value(?, ?)");
                ps2.setObject(1, "小红");
                ps2.setObject(2, "35884");
                ps2.execute();
                System.out.println("插入一条记录,小红");
                
                conn.commit(); // 提交进行执行
                
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
                
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {        
                
                try {
                    if(null != ps2) {
                        ps2.close();
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                
                try {
                    if(null != ps1) {
                        ps1.close();
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                
                try {
                    if(null != conn) {
                        conn.close();
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }        
            }
            
            
            
        }
    
    }

     执行操作后

    1. 失败操作的示例

    执行操作前

    package com.machuang.jdbc;
    
    /**
     * 测试 事务性
     */
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.PreparedStatement;
    import java.sql.ResultSet;
    import java.sql.SQLException;
    
    
    public class Demo06 {
    
        public static void main(String[] args) {
            
            Connection conn = null;
            PreparedStatement ps1 = null;
            PreparedStatement ps2 = null;
            try {
                // 加载mysql驱动
                Class.forName("com.mysql.jdbc.Driver");
                // 连接数据库
                conn = DriverManager.getConnection(
                                    "jdbc:mysql://localhost:3306/testjdbc","root","333666");
                
                // ps1 和 ps2 在一个提交之间,所以时一个事务
                conn.setAutoCommit(false);    // 设置事务手动提交
                
                ps1 = conn.prepareStatement("insert into t_usr (usrName, pwd) value(?, ?)");
                ps1.setObject(1, "小明");
                ps1.setObject(2, "646468");
                ps1.execute();
                System.out.println("插入一条记录,小明");
                
                try {
                    Thread.sleep(500);        // 线程休眠 500ms
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                
                ps2 = conn.prepareStatement("insert into t_usr (usrName, pwd) value(?, ?, ?)");    // 该处出错
                ps2.setObject(1, "小红");
                ps2.setObject(2, "35884");
                ps2.execute();
                System.out.println("插入一条记录,小红");
                
                conn.commit(); // 提交进行执行
                
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
                
            } catch (SQLException e) {
                e.printStackTrace();
            } finally {        
                
                try {
                    if(null != ps2) {
                        ps2.close();
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                
                try {
                    if(null != ps1) {
                        ps1.close();
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }
                
                try {
                    if(null != conn) {
                        conn.close();
                    }
                } catch (SQLException e) {
                    e.printStackTrace();
                }        
            }
            
            
            
        }
    
    }

    代码出错:

    执行操作后

     

  • 相关阅读:
    [导入]对字符串进行SHA1和DES(加密,解密),加密和解密的类
    [导入]在DropDownList 中添加"请选择"
    [导入]GridView中添加层,点击打开,展开此层,反之
    [导入]中文的SqlHelper.cs类
    [导入]怎样从ASP.NET 2.0中读取连接字符串
    项目主管做的事
    [导入]用.NET轻松分析字符串值
    [导入]SQL 缓存失效 2.0 版中的新增功能
    [导入]ListBox绑定数据,从左边移到右边的ListBox
    [导入]GridView 自定义分页
  • 原文地址:https://www.cnblogs.com/cappuccinom/p/8877673.html
Copyright © 2011-2022 走看看