JDBC--編程之事務處理--回滾的簡單實例

代碼如下:


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

public class JdbcThings {	
	//獲取數據庫連接的方法
	public static Connection getConnection(){
		
		Connection con=null;
		try {
			Class.forName("com.mysql.jdbc.Driver");
			con=DriverManager.getConnection("jdbc:mysql://localhost:3306/new_Prictice","root","");
			
			
		} catch (Exception e) {
			
		}
		return con;
	}

	//想數據庫中添加記錄的方法
	public void insertUser_t(Connection con) throws SQLException{
					
			String sql ="insert into user_t  (id,name,password,email) values "
					+ "('10','liuye','123456','[email protected]') ";
			Statement st=con.createStatement();
			int count =st.executeUpdate(sql);
			System.out.println("想數據庫中添加了"+count+"條記錄");		
	}	
    public void insertUser_adress(Connection con) throws SQLException{
    	
    		String  sql ="insert into user_adress  (id,city,country,user_id)  values "
    				+ " ('1','huashengdun','meiguo','1')";
    		Statement  st= con.createStatement();
    		int count =st.executeUpdate(sql);
    		System.out.println("想數據庫中添加了"+count+"條記錄");    		
		}

	public static void main(String[] args) {	
		JdbcThings jt= new  JdbcThings();
		Connection con=null;
		
		try {
			
			con=getConnection();
			con.setAutoCommit(false);
			
			jt.insertUser_t(con);
			jt.insertUser_adress(con);
			
			con.commit();
			
		} catch (SQLException e) {
			System.out.println("捕獲到----sql異常------");
			e.printStackTrace();
			
			
			try {
				//進行實物回滾
				con.rollback();
				System.out.println("事務回滾成功");
				
				
			} catch (Exception e2) {
				e2.printStackTrace();
			}
		}
		//最後關閉連接
		finally{
			try {
				
				con.close();
				
			} catch (Exception e3) {
			 
				e3.printStackTrace();
				
			}						
		}
	
	}

}


發佈了34 篇原創文章 · 獲贊 11 · 訪問量 3萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章