cmd1.Transaction = mytransaction ‘这里假设已经建立了cmd1对象
cmd1.ExecuteNonQuery()
mytransaction.Commit() ''''提交事务
Catch ex As Exception
mytransaction.Rollback() ''''回滚事务
Return -1 ‘做一些其他处理
Finally
conn.Close()
End Try
说明:对于dataadapter.update方法,如何使用事务呢?其实dataadapter本身并不进行数据更新,而是它的insertcommand,updatecommand,deletecommand。那么就象上面一样设置这三个command对象的Transaction属性就可以了。其他的和上面没有什么不同。
5. 既然我们在前面说了采用开放式并发处理,就要对异常进行相应的捕获,给出相应的提示信息和处理办法。对于那些可能引起异常的代码都要包含在
try
…
end try
块之间,这是一个很好的习惯。
一般可以采用类似下面的操作:
Try
Sqldpr1.Update(ds1.Tables("table1"))
Catch Ex As Data.DBConcurrencyException ''''并发冲突的异常
‘做相应的处理
End try
说明:这里的做相应的处理,可以是把最新的行从数据库中读出来更新现有的行(当然如果该行被删除例外),也可以重新填充数据(fill操作)。这个时候我们可以作出判断,该行是被删除的情况,可以使用一个函数将Ex.row(“ID”)作为参数传递过去,使用一个command.executeschar方法来判断是否记录存在,使用executereader或fill来取得已经变化的记录或刷新全部记录。这里提到了update()方法引发的异常,如果是立即更新引起的,处理的方式也是一样的。
总结:
由于时间和本人水平的问题,这个问题不能讨论的太深入,请大家原谅。可能里面涉及的范例代码比较少(呵呵,真的很少),读起来可能有些头疼,但我想如果你对数据更新的原理如果比较熟悉应该可以理解其中的意思。最后,还是希望大家能多提意见!有时间一定给出相关的范例代码。
--闵峰
上一页 [1] [2]
Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved. 闵涛 E_mail:admin@mintao.net(欢迎提供学习资源)
鄂公网安备 42011102001154号
站长:MinTao ICP备案号:鄂ICP备11006601号-18