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();
                }        
            }
            
            
            
        }
    
    }

    代码出错:

    执行操作后

     

  • 相关阅读:
    只要你拥有爱心,你就会拥有快乐。
    解决升级 Office 2010 之后 Outlook 提示“无法打开 Microsoft Outlook”
    《老人与海》
    UML模型的组成
    2009年11月11日
    IBatis存取图片在Oracle Blob大字段中Asp.Net
    “北京今年入冬的第一场雪”,纪念博客园写日志一年了
    UML建模实践概述
    UML 类图
    UML 用例图
  • 原文地址:https://www.cnblogs.com/cappuccinom/p/8877673.html
Copyright © 2011-2022 走看看