概述
1.类ConnectionFactory
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Properties;
public class ConnectionFactory {
public static String url;
public static String driver;
static
{
Properties pp = new Properties();
InputStream inStream=Thread.currentThread().getContextClassLoader().getResourceAsStream("config.properties");
// InputStream inStream=ConnectionFactory.class.getClassLoader().getResourceAsStream("config.properties");
//两种读入数据流的方式;
try {
pp.load(inStream);
url= pp.getProperty("url");
driver =pp.getProperty("driver");
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
public static Connection getConnection()
{
Connection conn=null;
try {
Class.forName(driver);
conn= DriverManager.getConnection(url);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
public static void close(Connection conn,Statement st, ResultSet rs) throws SQLException
{
if(conn!=null) conn.close();
if(st!=null) st.close();
if(rs!=null) rs.close();
}
public static void close(Connection conn,Statement st) throws SQLException
{
close(conn,st,null);
}
}
2.主类
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import zhangJDBC.ConnectionFactory;
public class Transatiob {
public static void main(String[] args) {
/*
1.设置事务的提交方式:非自动提交
conn.setAutoCommit(false);
2.将需要添加的事务的代码放在try,catch中
try{
//需要添加事物的业务代码
}catch(Exception e)
{
}
3.在try块中添加提交操作,表示操作无异常,提交事务
conn.commit();//正常流程,提交事务
4.在catch块中添加回滚事务,表示操作出现异常,撤销事务
conn.rollback();
5.设置事务提交的方式为自动提交
conn.setAutoCommit(true);
在JDBC处理事务的过程中,也可以设置事物的回滚带你,当事务回滚的时候,回滚到保存点
Savepoint savepoint = conn.setSacepoint();
roll.rollback(savepoint);
st.releaseSavepoint(savepoint);//记住释放save point
*/
Connection conn=ConnectionFactory.getConnection();
PreparedStatement pst = null;
String sql="insert into stuinfo(name,content,image) values(?,null,null)";
String sql1="delete from student where id=1";
try {
//设置是否自动提交事务为false
conn.setAutoCommit(false);
pst= conn.prepareStatement(sql);
pst.setString(1, "测试事务");
System.out.println("第一句语句执行。。。。。");
pst.executeUpdate();
pst= conn.prepareStatement(sql1);
System.out.println("第二句语句执行。。。");
pst.executeUpdate();
//2.提交事务
conn.commit();
System.out.println("提交事务");
} catch (SQLException e) {
// TODO Auto-generated catch block
//如果出现异常则回滚事务
try {
conn.rollback();
System.out.println("回退事务。。。");
} catch (SQLException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}
e.printStackTrace();
}finally{
try {
conn.setAutoCommit(true);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
try {
ConnectionFactory.close(conn, pst);
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}
最后
以上就是震动鞋子为你收集整理的JDBC的事务控制的全部内容,希望文章能够帮你解决JDBC的事务控制所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复