JDBC事务控制 菜鸟入门
来源:互联网 发布:怎样和淘宝买家聊天 编辑:程序博客网 时间:2024/05/16 05:47
上一篇文章我们分享了一个简单的JDBC的小案例,这一章我们来看看JDBC的事务:
第一什么是事务
就是一个操作序列,要么全部执行 要么都不执行,保持我们数据的一致性,一个sql语句就是一个控制单元
一组sql语句的执行就是一次事务当然我们也会把一个sql语句的提交叫做事务。
我们来看看事务有哪些特性:
原子性:
事务中的sql要么全部提交 要么全部回滚到最初的状态
一致性
数据库的完整性约束
隔离性 事务应该是隔离性质 不应该影响其他事务的正常提交
永久性事务对数据库的影响应该是永久性的
我们也来看看一个普通的jdbc的链接查询
public class JdbcDao { public static List<FileInfoBean> TestDao() throws ClassNotFoundException, SQLException{ //我们建立三个变量 Connection con = null; //用于连接数据库 PreparedStatement str = null;//用于向数据库发送sql语句 ResultSet resu = null;//用于处理我们查找到的结果集 Class.forName("com.mysql.jdbc.Driver"); //获取连接对象 传入要连接的数据库地址 并传入用户名称和密码 con = (Connection)JdbcUtil.GetConnection(); //创建sql语句 String sql = "select * from SCGA_QM_HTMLINFO"; //获取发送sql语句PreparedStatement对象 最大的区别就是 这里我们获取sql执行对象的时候是要把Sql语句传入过去的 str = (PreparedStatement) con.prepareStatement(sql); //执行sql resu = str.executeQuery(); List<FileInfoBean> ArrayFileBean = new ArrayList<FileInfoBean>(); while (resu.next()){ FileInfoBean file = new FileInfoBean(); file.setId(resu.getString("PK_ID")); file.setFileName(resu.getString("F_FILENAME")); file.setCreationTime(resu.getDate("F_CREATIONTIME")); ArrayFileBean.add(file); } return ArrayFileBean; } //创建main方法 调用TestDao() 抛出异常信息public static void main(String[] args) throws ClassNotFoundException, SQLException { TestDao();}
以上是一个简单的jdbc查询实现 下面我们来看看加 一个加入的事务的jdbc如何写
public class JdbcDao { public static List<FileInfoBean> TestDao() { //我们建立三个变量 Connection con = null; //用于连接数据库 PreparedStatement str = null;//用于向数据库发送sql语句 ResultSet resu = null;//用于处理我们查找到的结果集 PreparedStatement str2 = null; try { Class.forName("com.mysql.jdbc.Driver"); } catch (ClassNotFoundException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } List<FileInfoBean> ArrayFileBean = new ArrayList<FileInfoBean>(); try { //获取连接对象 传入要连接的数据库地址 并传入用户名称和密码 con = (Connection)JdbcUtil.GetConnection(); //设置自动提交为false con.setAutoCommit(false); //创建sql语句 String addSql = "insert into scga_qm_htmlinfo(PK_ID,F_FILENAME) values(?,?)"; String sql = "select * from scga_qm_htmlinfo"; //获取发送sql语句PreparedStatement对象 最大的区别就是 这里我们获取sql执行对象的时候是要把Sql语句传入过去的 str = (PreparedStatement) con.prepareStatement(sql); str2 = (PreparedStatement) con.prepareStatement(addSql); str2.setString(1, "11"); str2.setString(2, "胡君问"); //执行sql resu = str.executeQuery(); //执行sql int i = str2.executeUpdate(); //提交事务 我们在这里将两个sql作为一次事务进行提交 con.commit(); while (resu.next()){ FileInfoBean file = new FileInfoBean(); file.setId(resu.getString("PK_ID")); file.setFileName(resu.getString("F_FILENAME")); file.setCreationTime(resu.getDate("F_CREATIONTIME")); ArrayFileBean.add(file); System.out.println(file.getFileName()); } } //如果发生异常我们就调用 connection对象的rollback方法进行回滚 catch (SQLException e){ System.out.println("发生错误进行回滚"); try { con.rollback(); } catch (SQLException e1) { // TODO Auto-generated catch block e1.printStackTrace(); } } return ArrayFileBean; }
其实主要就是
//设置自动提交为false
con.setAutoCommit(false);
//提交事务 我们在这里将两个sql作为一次事务进行提交
con.commit();
//如果发生异常我们就调用 connection对象的rollback方法进行回滚
con.rollback();
这三句代码来做jdbc事务的
1 0
- JDBC事务控制 菜鸟入门
- JDBC的事务控制
- (12)JDBC事务控制
- JDBC事务控制
- JDBC的事务控制
- JDBC的事务控制
- Jdbc事务控制
- jdbc事务控制
- JDBC事务控制管理
- jdbc控制事务
- JDBC的事务控制
- JDBC事务控制管理
- JDBC 事务控制
- JDBC事务控制管理
- JDBC事务控制管理
- jdbc事务控制
- JDBC事务控制管理
- JDBC事务控制管理
- 《深入理解Java虚拟机》读书笔记
- 控制面板中打开鼠标,提示:无法连接至synaptics定点装置驱动程序的问题
- Poj 1862 Stripies【贪心+数学】
- [BZOJ1018][SHOI2008]堵塞的交通traffic(线段树维护连通性)
- 150301图像旋转
- JDBC事务控制 菜鸟入门
- 关于CGI、fastcgi、PHP-CGI、PHP-FPM的理解
- dalvik 与art 区别
- U盘分区合并的教程详解
- linux命令:cd命令
- Linux/include/uapi/linux/input-event-codes.h
- Android线程销毁
- H——H
- php5.5.12+redis2.6 Windwos安装下安装