【参考答案】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 TransactionTest {
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/hr?characterEncoding=gb2312", "root", "123456");
conn.setAutoCommit(false); // JDBC中默认是true,自动提交事务
String sql = "insert into Emp(Emp_ID,Emp_Name,Job,Manager_ID,Entry_Date,";
sql += "Salary,Bonus,Dept_ID)";
sql += " values (?,?,?,?,?,?,?,5)";// ?是占位符
ps1 = conn.prepareStatement(sql);
ps1.setObject(1, 21);
ps1.setObject(2, "李均宓");
ps1.setObject(3, "其他");
ps1.setObject(4, null);
ps1.setObject(5, "2014-11-08 12:31:52");
ps1.setObject(6, 3500);
ps1.setObject(7, null);
ps1.execute();
System.out.println("插入雇员1数据成功。");
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
sql = "insert into Emp(Emp_ID,Emp_Name,Job,Manager_ID,Entry_Date,";
sql += "Salary,Bonus,Dept_ID)";
sql += " values (?,?,?,?,?,?,?,5)";// ?是占位符
ps2 = conn.prepareStatement(sql);
ps2.setObject(1, 22);
ps2.setObject(2, "高嘉悦");
ps2.setObject(3, "其他");
ps2.setObject(4, null);
ps2.setObject(5, "2015-01-08 09:31:52");
ps2.setObject(6, 2500);
ps2.setObject(7, null);
ps2.execute();
System.out.println("插入雇员2数据成功。");
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();
}
}
}
}