我感觉C#中的Transaction和JAVA里的Transaction大同小异,但我觉得Transaction只有经过提交才可以获得结果。
事实上在ADO.Net通过Transaction对象来支持事务,Transaction对象是在打开的连接上创建的。当事务被挂起时,那些对连接执行的命令必须在事务中进行登记,方法是,将一个对Transaction对象的引用分配给他的Transaction属性。当事务被挂起时,命令无法在Transaction对象之外对连接执行。
如果事务已经提交,构成事务的所有命令将会永久地写入数据源。如果事务被返回,那么所有的命令将从数据源取消。
给你举个例子吧
private void SomeFunction()
{
System.Data.OleDb.OleDbTrrnsaction TrnNew;
Connection1.Open();
TrnNew=Connection1.BeginTransaction();
DataAdapter1.InsertCommand.Transaction=TrnNew;
try
{
DataAdapter.Update(.....);
TrnNew.Commit();
}
Catch(System.Data.OleDb.OleDbException err)
{
TrnNew.RollBack();
MessageBox.Show(err.Message);
}
finally
{
Connection1.Close();
}
}
这就是Transaction的一般用法
有问题可以多多交流
我的QQ是214295933
事实上在ADO.Net通过Transaction对象来支持事务,Transaction对象是在打开的连接上创建的。当事务被挂起时,那些对连接执行的命令必须在事务中进行登记,方法是,将一个对Transaction对象的引用分配给他的Transaction属性。当事务被挂起时,命令无法在Transaction对象之外对连接执行。
如果事务已经提交,构成事务的所有命令将会永久地写入数据源。如果事务被返回,那么所有的命令将从数据源取消。
给你举个例子吧
private void SomeFunction()
{
System.Data.OleDb.OleDbTrrnsaction TrnNew;
Connection1.Open();
TrnNew=Connection1.BeginTransaction();
DataAdapter1.InsertCommand.Transaction=TrnNew;
try
{
DataAdapter.Update(.....);
TrnNew.Commit();
}
Catch(System.Data.OleDb.OleDbException err)
{
TrnNew.RollBack();
MessageBox.Show(err.Message);
}
finally
{
Connection1.Close();
}
}
这就是Transaction的一般用法
有问题可以多多交流
我的QQ是214295933
解决方案 »
- 菜单合并问题!
- double c = 9/5;
- 请问如何得到已经填充好的DataSet的大小?
- winform中將TextBox控件的Enabled設為false時TextBox的背景顏色變成灰色,可以設置為其它顏色嗎?
- 请问诸如 笔记本音量显示 软件一类的软件是如何编写的?
- 急!!!asp.net + c# 怎么实现产品的无限级分类?????????????????????????
- WCF 服务类
- 菜鸟求助:DataGrid中得分行?
- 急急!!!好心人请提供份“个人日程”的资料或代码。
- C#不会这么弱智吧?
- com+是否保存客户状态?
- 一个报表的打印程序,做了个安装程序,在另一台机器安装后不能正常运行
我也觉得SELECT语句又不对数据库造成任何修改
没有必要用Transaction的