您的位置:首页 > 编程语言 > Java开发

java中jdbc事务管理

2016-06-11 11:52 381 查看
       事务的好处就是保证多表操纵的一致性。事务具有原子性,一个事务内的操作要么全部执行成功,要么全部执行失败,默认情况下,JDBC对数据库的操作是自动提交的。我们通过conn.setAutoCommit(false);可以设置为自动提交,如果其中有一步操作失败,可以使用RollBack进行回滚。

      下面的例子先执行插入,后执行删除,如果中间有异常,可以使用rollback进行回滚

     //创建连接
public static Connection createCon()
{

try {
Class.forName(driver);
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} //classLoader,加载对应驱动
try {
conn = (Connection) DriverManager.getConnection(url, username, pwd);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

return conn;
}
    Connection conn=dao.createCon();
try {
conn.setAutoCommit(false);//禁止JDBC自动提交

//添加操作
String addsql="INSERT skus (skuname,skucode,categoryid) VALUES (?,?,?) ";
try {
PreparedStatement pst=(PreparedStatement)conn.prepareStatement(addsql);
pst.setString(1, "短裤");
pst.setString(2, "00008");
pst.setShort(3,(short) 6);
pst.executeUpdate();
pst.close();

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
};

//制造异常
String ss="aa";
Integer.parseInt(ss);

//删除操作
String sql="DELETE FROM skus WHERE skucode='00005' ";
try {
PreparedStatement pst=(PreparedStatement)conn.prepareStatement(sql);
pst.executeUpdate();
pst.close();

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
};

conn.commit();//手动提交

} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
try {
conn.rollback();
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  jdbc Java