實例(以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();}}} }
?