使用JDBC进行数据库的事务操作(2)】的更多相关文章

本篇讲述数据库中非常重要的事务概念和如何使用MySQL命令行窗口来进行数据库的事务操作.下一篇会讲述如何使用JDBC进行数据库的事务操作. 事务是指数据库中的一组逻辑操作,这个操作的特点就是在该组逻辑中,所有的操作要么全部成功,要么全部失败.在各个数据具有特别紧密的联系时,最好是使用数据库的事务来完成逻辑处理. 例如路人甲A给路人甲B转账1000元,对应于如下两条SQL命令: where name=’A’; where name=’B’; 在上面两条SQL语句中,任意一条SQL执行过程中出现了错…
本篇将讲诉如何使用JDBC进行数据库有关事务的操作.在上一篇博客中已经介绍了事务的概念,和在MySQL命令行窗口进行开启事务,提交事务以及回滚事务的操作. 似乎事务和批处理都可以一次同时执行多条SQL命令,但是事务是如果某一条SQL出错,则前面已经执行过的SQL全部都将回滚:而批处理中某一条SQL出错,那么这条出错的SQL要么会抛出个异常,要么以一个代表出错的值返回,已经执行过的SQL不受影响,至于后面的SQL是否还会执行则看数据库,不同数据库有不同的处理. 在前一篇我们说过,数据库对于事务是默…
本篇讲述如何使用JDBC对数据库实现批处理操作.很多时候单条SQL命令不能满足我们的需求,我们需要对数据库一次实现很多操作,需要发送一批SQL命令给数据库执行. 而JDBC也提供了相应的方法给我们实现批处理操作.分别使用Statement对象或者PreparedStatement对象.这两种方式分别有着不同的运用场景: ⑴ 使用Statement对象 优点:能发送多条不同操作类型的SQL命令,也就是说在这发送的一批SQL语句中可以有各种增删改查命令. 缺点:虽然能发送多条不同操作类型的SQL命令…
MySQL数据库-MySQL事务操作(回滚) 事务用于将某些操作的多个SQL作为原子性操作,一旦有某一个出现错误,即可回滚到原来的状态,从而保证数据库数据完整性. 举例:有这样一张表 从表里可以看出张三的资金里有850元,李四的资金有632元 假如张三向李四划款20元,那么张三的资金应该减20,李四的资金应该加20 WHERE yhm = '张三'; WHERE yhm = '李四'; 可以看到张三的资金以减20,李四的资金以加20 但是如果在李四资金加的时候SQL语句出错,那么就会导致张三减少…
/** * 获取数据库连接 */ public Connection GetConnection(){ Connection connection=null; try { Class.forName("oracle.jdbc.driver.OracleDriver"); try { connection=DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orcl","orcl_tes…
那么我们都是通过程序操作数据库.所以要了解jdbc下怎样对事务操作.jdbc如何操作事务? 自动事务false那就不开了呗相当于开启事务. package cn.itcast.transaction; import java.sql.Connection; import java.sql.SQLException; import java.sql.Statement; import cn.itcast.utils.JdbcUtils; //代码加上事务了加上回滚了加上提交了 //jdbc中事务操…
在Django中实现数据库的事务操作 在学习MySQL数据库时,MySQL数据库是支持原子操作的. 什么是数据库的原子操作呢??打个比方,一个消费者在一个商户里刷信用卡消费. 交易正常时,银行在消费者的账户里减去相应的款项,在商户的帐户加上相应的款项. 但是如果银行从消费者的账户里扣完钱之后,还未在商户的帐户里加上相应的款项时. 由于某些原因,系统或者数据库出现异常了,那么此时钱已经从消费者的账户里扣除了,但是商户的账户里却没有加上相应的款项,让会让商户遭受损失. 这种情况下,最好的解决办法就是…
最近需要通过JDBC对数据库做事务型操作,实践时发现,并没有达到想要的效果,表现在:1.每次执行executeUpdate()后,数据就马上能在DB中查到.但按理来说,我还没执行commit(),DB中不应该有这个数据:2.执行rollback()时,数据也没回滚. 定位问题后,发现是数据库表类型在作祟: 当时设定的“表类型”为MyISAM,而这种类型,是不支持事务操作的. 能够支持事务操作的表类型是“InnoDB",修改表类型为”InnoDB"后,事务操作终于正常了. 按网上的说法,…
本篇讲诉数据库中事务的四大特性(ACID),并且将会详细地说明事务的隔离级别. 如果一个数据库声称支持事务的操作,那么该数据库必须要具备以下四个特性: ⑴ 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚,这和前面两篇博客介绍事务的功能是一样的概念,因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响. ⑵ 一致性(Consistency) 一致性是指事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执…
事务的特性 原子性:强调事务的不可分割. 一致性:事务的执行的前后数据的完整性保持一致. 隔离性:一个事务执行的过程中,不应该受到其他事务的干扰. 持久性:事务一旦结束,数据就持久化到数据库. 如果不考虑隔离性会引发的安全性问题 脏读:一个事务读到了另一个事务的未提交的数据. 不可重复读:一个事务读到了另一个事务已经提交的update的数据,导致多次查询的结果不一致. 虚读:一个事务读到了另一个事务已经提交的insert的数据,导致多次查询的结果不一致. 解决读问题:设置事务的隔离级别 未提交读…
最近实现了一个小功能,针对Oracle数据库两张关联表进行查询和修改,因为比较简单,所以选择了spring框架里的JdbcTemplate.JdbcTemplate算是老古董了,是当年spring为了封装JDBC对数据库繁琐的操作而搞出来一个模板,相比起spring框架后来搞的JPA就显得比较low了.但技术只有合适的,没有最好的.这次因为时间紧,功能简单,使用JPA反而有点杀猪用牛刀了.直接上例子: maven项目,当然先把依赖配置好了,spring框架的几个需要的jar包,这里只贴出来pom…
http://blog.csdn.net/yerenyuan_pku/article/details/70024364 事务的回顾 什么是事务 事务是逻辑上的一组操作,组成这组操作的各个逻辑单元,要么一起成功,要么一起失败. 事务的特性 原子性:强调事务的不可分割. 一致性:事务的执行的前后数据的完整性保持一致. 隔离性:一个事务执行的过程中,不应该受到其他事务的干扰. 持久性:事务一旦结束,数据就持久化到数据库. 如果不考虑隔离性会引发的安全性问题 脏读:一个事务读到了另一个事务的未提交的数据…
最近需要通过JDBC对数据库做事务型操作,实践时发现,并没有达到想要的效果,表现在:1.每次执行executeUpdate()后,数据就马上能在DB中查到.但按理来说,我还没执行commit(),DB中不应该有这个数据:2.执行rollback()时,数据也没回滚. 定位问题后,发现是数据库表类型在作祟:当时设定的“表类型”为MyISAM,而这种类型,是不支持事务操作的.能够支持事务操作的表类型是“InnoDB",修改表类型为”InnoDB"后,事务操作终于正常了. 按网上的说法,In…
以一个例子开头* To-do 向导   # 配置文件       __openerp_.py:         { 'name': 'To-do Tasks Management Assistant',    'description': 'Mass edit your To-Do backlog.',    'author': 'Daniel Reis',    'depends': ['todo_user'],    'data': ['todo_wizard_view.xml'], }  …
一.锁的概念1.作用:是保证数据的一致性,只能一个人修改数据,不能同时多用户修改2.分类:行级锁和表级锁   乐观锁和悲观锁 二.事务1.为了保证数据的一致性和完整性,让数据库的多项操作合并为一个整体,要不全部成功,要不有一个失败全部失败2.步骤: a.将jdbc的自动提交事务改为手动提交 b.在业务最后提交事务 c.在异常处理中回滚事务3.事务的边界: 事务的开始:jdbc的自动提交事务改为手动提交 事务的结束:commit和rollback.如果事务没有正常结束,事务中的锁是不会释放的4.事…
一.需求背景: 我们生活经常遇到一个情况:在购买商品的时候,已经支付的了,那么商品应该处于已购买订单里.而不是付款之后,已购买商品没有. 还有转账的时候,转出方和转入方都需要扣减相应的金额,而不是一方减少或者增加. 因为上面的例子都是对数据操作,所以需要我们操作数据库的事务. 如何确定一个事务范围? 事务是由一系列数据库操作组成,他和业务场景有关.当操作完成的时候,如果操作过程没有出现失败,则这个事务产生的数据库操作一并提交(commit).反之,如果出现失败,则一并回滚(rollback).…
从Spring 事务配置说起 先看看Spring 事务的基础配置 <aop:aspectj-autoproxy proxy-target-class="true"/> <bean id="transactionManager" class="org.springframework.jdbc.datasource.DataSourceTransactionManager"> <property name="d…
一.环境搭建(复习) 首先建立lib目录然后要把对应的jar包导进来 然后就是jdbc.properties文件 user=root password=123456 url=jdbc:mysql://localhost:3306/test driverClass=com.mysql.jdbc.Driver 然后就是数据库的工具类了JDBCUtils package com.md.util; import java.io.IOException; import java.io.InputStrea…
1.android下junit测试框架配置 单元测试需要在手机中进行安装测试 (1).在清单文件中manifest节点下配置如下节点 <instrumentation android:name="android.test.InstrumentationTestRunner" android:targetPackage="com.example.demo1" /> 上面targetPackage指定的包要和应用的package相同. (2)在清单文件中ap…
.xml <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent&qu…
目录: 0. 参考链接与参考手册1. oracle 实用(常用操作)指令2. 数据库基本操作语法 a) 表操作 1)创建表 2)更新表 3)删除表 4)查询 b) 事务操作 c) 序列操作 1)创建序列 2)序列操作 3. 数据4. 数据5. 数据 0.参考链接与参考手册 基本操作文档: 学校实验指导书 函数整理: oracle 10g 函数大全 oracle SQL 参考文档:  Oracle 10g SQL 参考文档   1.oracle 实用(常用操作)指令 1) to_char(date…
 Linux下的qt安装,命令时:sudoapt-get install qt-sdk 安装mysql数据库,安装方法参考博客:http://blog.csdn.net/tototuzuoquan/article/details/39565783 如果行想进数据库开发,需要安装libqt5sql5-mysql.命令是: sudo apt-get install libqt5sql5-mysql 4 创建一个项目 要调用数据库,需要加上QT += gui widgets sql  也就是说要加…
查询事件 查询事件(V5.0.4+) 从 5.0.4+ 版本开始,增加了数据库的CURD操作事件支持,包括: 查询事件仅支持 find . select . insert . update 和 delete 方法. 注册事件 使用下面的方法注册数据库查询事件 Query::event('after_insert','callback'); Query::event('before_select',function($options,$query){ // 事件处理 return $result;…
JAVA jdbc thin远程连接并操作Oracle数据库 by:授客 QQ:1033553122 测试环境 数据库:linux 下Oracle_11g_R2 编码工具:Eclipse 编码平台:Win7(未安装Oracle数据库,也没安装ODBC驱动) JDK:jdk-6u14-windows-i586 备注:想学oracle的同学,建议在Linux.Unix平台下进行学习,如果觉得安装麻烦,可以加全国软件性能测试交流群:7156436,免费获取Oracle_11g_R2 linux虚拟机及…
事务 事务指逻辑上的一组操作,组成这组操作的各个单元,要不全部成功,要不全部不成功. 数据库开启事务命令: start transaction   开启事务 rollback  回滚事务,即撤销指定的sql语句(只能回退inser deldete update语句) commit 提交事务,提交未存储的事务 savepoint 保留点 ,事务处理中设置的临时占位符 你可以对它发布回退(与整个事务回退不同) 举例: 银行转账, A 转给 B 10000 ; 那么A - 10000  ,  B +1…
################################################################## # PUBLIC METHODS THAT ALTER ATTRIBUTES AND RETURN A NEW QUERYSET # 公共方法:通过操作属性,来返回一个新的queryset查询集 ################################################################## def all(self) # 获取…
JDBC 4.0 开始Java操作数据库不用再使用 Class.forName加载驱动类了 代码示例 转自 https://docs.oracle.com/javase/tutorial/jdbc/overview/index.html public void connectToAndQueryDa…
现在我们要做一个转账系统. 第一章:创建一张新的表格(用户银行账户表格) 在之前的JDBC_01数据库中新增一个表格,名字为:Account   其中,有id.银行卡号.银行密码.账户余额. 创建表格代码: create table account (id int not null auto_increment,username varchar(45),password varchar(45),money int,primary key(id)); 创建好后,使用命令desc account;查…
在做借书系统的时候,用到了事务操作,不会使用qt中事务操作怎么写,查了一些博客帖子,并不起作用,后来发现,在进行事务成功判断时,出现问题,正确代码如下 if(QSqlDatabase::database().transaction()){ bool res1,res2; query.prepare("update booklist set borrowNum=?,restNum=? where bookId=?"); query.bindValue(,++borrownum); que…
主要内容 定义Spring的数据访问支持 配置数据库资源 使用Spring提供的JDBC模板 写在前面:经过上一篇文章的学习,我们掌握了如何写web应用的控制器层,不过由于只定义了SpitterRepository和SpittleRepository接口,在本地启动该web服务的时候会遇到控制器无法注入对应的bean的错误,因此我决定跳过6~9章,先搞定数据库访问者一章. 在企业级应用开发中不可避免得会涉及到数据持久化层,在数据持久化层的开发过程中,可能遇到很多陷阱.你需要初始化数据库访问框架.…