
1.原子性:就是begin开始一个事务后,在commit或rollback前时全部是一个整体,要全部都完成执行才能进行提交---->>>原子性也就是所有是一个整体
2.一致性:事物中有错误的 *** 作所有其他语句不能执行要执行回滚(可能和原子性很像,注意区别开)
3.隔离性:不赘述
4.持久性:提交事务后不可逆 *** 作
connection就相当于数据库 *** 作中打开了一个事务的连接
此示例中包含了事务的一个批处理Batch
思路是一样的,先将预状态通道中的sql语句添加到批处理中进行就绪等待
等待调用预状态通道执行executeBatch()是开始进行批处理更新数据
之后返回一个int型的状态码数组--->>>产生改变的数据库行数
注意:添加到batch中后执行一定是进行Batch,而不是代码中注释的一行错误示范
OracleTransaction类的概述
应用程序通过针对OracleConnection对象调用 BeginTransaction 来创建OracleTransaction对象。对OracleTransaction对象执行与该事务关联的所有后续 *** 作(例如提交或中止该事务)。OracleTransaction的成员主要有:
属性:
Connection,指定与该事务关联的OracleConnection对象;
IsolationLevel,指定该事务的IsolationLevel;枚举类型,用于对事物的锁定,取值有Chaos、ReadCommited、ReadUncommited、RepeatableRead、Serializable、Unspecified。
方法:
Commit,提交SQL数据库事务;
Rollback , 从挂起状态回滚事务;
第一个示例:
public void 函数名称()
{
string strUpdateSql1 = "update 表名 set XH='...' where XH='...' and LCGZ_ID='...'
string strUpdateSql2 = "update 表名 set XH='...' where BZGZ_ID='...'
OracleConnection conn = new OracleConnection()
conn.ConnectionString = "数据库连接字符串"
conn.Open()
OracleTransaction updateProcess = conn.BeginTransaction()try
{
OracleCommand comm1 = conn.CreateCommand()
comm1.CommandText = strUpdateSql1
comm1.Transaction = updateProcess
comm1.ExecuteNonQuery() OracleCommand comm2 = conn.CreateCommand()
comm2.CommandText = strUpdateSql2
comm2.Transaction = updateProcess
comm2.ExecuteNonQuery() updateProcess.Commit()
}
catch()
{
updateProcess.Rollback()
}
finally
{
conn.Close()
}
}
第二个示例:
public static bool 函数名2(int fID)
{
OracleConnection conn = new OracleConnection()
conn.ConnectionString = "数据库连接字符串"
conn.Open()
OracleTransaction deleteProcess = conn.BeginTransaction() try
{
ArrayList alObjects = GetObjects()
foreach(object o in alObjects)
{
OracleCommand tmpComm = conn.CreateCommand()
tmpComm.Transaction = deleteProcess
tmpComm.CommandText = "delete from 表1名 where BZGZ_ID="+o.ID
tmpComm.ExecuteNonQuery() OracleCommand tmpComm2 = conn.CreateCommand()
tmpComm2.Transaction = deleteProcess
tmpComm2.CommandText = "delete from 表2名 where BZGZ_ID="+o.ID
tmpComm2.ExecuteNonQuery()
}
OracleCommand comm = conn.CreateCommand()
comm.Transaction = deleteProcess
comm.CommandText = "delete from 表3名 where LCGZ_ID="+fID
comm.ExecuteNonQuery() deleteProcess.Commit()
return true
}
catch()
{
deleteProcess.Rollback()
return false
}
finally
{
conn.Close()
}
事务是作为一个单元的一组有序的数据库 *** 作。如果组中的所有 *** 作都成功, 则认为事务成功,即使只有一个 *** 作失败,事务也不成功。如果所有 *** 作完成,事务则提交,其修改将作用于所有其他数据库进程。如果一个 *** 作失败,则事务将回滚,该事务所有 *** 作的影响都将取消。这就是数据库中的事务了,关于数据库的更多知识,推荐你看黑马程序员视频库的视频,能学到很多知识哦!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)