Java中MySQL事務處理舉例


實例(以sql語句中的insert語句為例)

 

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


/**
 * 事務的基本用法
 *
 */
public class Test 
{
    public static void main(String[] args) 
    {
        Connection conn = null;
        PreparedStatement ps1 = null;
        PreparedStatement ps2 = null;

        try
        {
            //加載驅動類
            Class.forName("com.mysql.jdbc.Driver");
            conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/testjdbc","root","123456");
            
            conn.setAutoCommit(false); //JDBC中默認是true,我們改成false,然后在后面手動提交
            
            ps1 = conn.prepareStatement("insert into t_user (username,pwd) values (?,?)");//?是占位符
            ps1.setObject(1, "張三");
            ps1.setObject(2, "666666");
            ps1.execute();
            System.out.println("插入一個用戶張三");
            
            try 
            {
                Thread.sleep(3000);
            } 
            catch (InterruptedException e) 
            {
                e.printStackTrace();
            }
            
            ps2 = conn.prepareStatement("insert into t_user (username,pwd) values (?,?)");
            ps2.setObject(1, "李四");
            ps2.setObject(2, "123456");
            ps2.execute();            
            System.out.println("插入一個用戶李四");
            
            conn.commit();//提交事務
         }
         catch (ClassNotFoundException e)
         {
            e.printStackTrace();
            try 
            {
                conn.rollback();//某一條數據添加失敗時,回滾
            } 
            catch (SQLException e1) 
            {
                e1.printStackTrace();
            }
        } 
        catch (SQLException e) 
        {
            e.printStackTrace();
        }
        finally
        {
            try 
            {
                if(ps1!=null)
                {
                    ps1.close();
                }
            } 
            catch (SQLException e) 
            {
                e.printStackTrace();
            }
            try 
            {
                if(conn!=null)
                {
                    conn.close();
                }
            } 
            catch (SQLException e) 
            {
                e.printStackTrace();
            }
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM