2015年11月8日 星期日

JDBC-關閉自動交易,呼叫預存程序

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

public class Procedure2 {

public static void main(String[] args) {
Connection conn=null;
String conUrl="jdbc:sqlserver://localhost:1433;databaseName=movie";
try{
conn=DriverManager.getConnection(conUrl,"sa","passw0rd");    //目前帳號密碼寫死
conn.setAutoCommit(false);                              //設定自動交易為關閉(預設是開啟)
String sql="{call gen_seats('2008-12-25 13:00',1,'A廳')}";  //呼叫DB中的預存程序指令
CallableStatement cs=conn.prepareCall(sql);                    
cs.execute();                                                                
conn.commit();                                                              // 確認交易
System.out.println("交易成功");                                  //當執行到這行無錯誤,則成功
}catch (SQLException e){
System.out.println("交易失敗,資料將不會儲存");   //當發生例外狀況,交易失敗
try{
conn.rollback();                                                           //取消交易(回到原始狀態)
}catch (SQLException e2){
System.out.println(e2);
}
}finally{                                                                    //關閉資源
if (conn !=null)
try{
conn.close();
}catch(SQLException e){
System.out.println(e);
}
}

}
}



問題,如果使用自動確認狀況下,
會導致資料不完全,原因?


沒有留言:

張貼留言