一个操作有两个动作,不是同时执行。
比如:
我要做删除,一个动作是删除信息,一个是删除图片。
要保证两个都能一起完成。要一个出错,另一个要是做了就回退,还没做就不让做。
解决方案 »
- datalist 绑定数据库后,空值字段想不显示,如何处理
- 问一个js移除页面标签的问题
- 水晶报表 客户端打印机名称
- 一个错误安装步骤,现在应该如何解决?
- 利用Indexing Service怎么样查询rtf格式文件?
- 如何在后台cs中控制asp:EditCommandColumn的visible属性,因为它没有name属性,不知如何在cs中去控制它?
- 100分求解:升級到asp.net2.0之後,DataGrid中的動態控件的ClientID與原來不一致
- MVC 多数据在同一cshtml中获取
- 怎么设置Repeater中控件的属性
- mvc4 修改文章模型转换
- 我们的工作组开发完成了一套比较好的基于.net的OA系统.
- 有关免虚拟目录的问题
{
删除图片;
删除信息;
}
catch
{
恢复图片;
恢复信息;
]
我是先讲图片COPY到另外一个文件夹中,该文件夹可以定义清空数据的周期,如果用户发现删除错了图片可以恢复该图片
你的数据应是放到数据库里的吧???
try
{
删除信息;
删除图片;}
catch
{恢复信息;
}
每个命令(Command)担供一个Do和一个UnDo操作,
在try里面执行所有的Do, 在catch里执行所有的UnDo
示例:
# region 事务处理:exeTrans(string[])通过一个SQL语句数组操作数据库,返回一个bool值
public static bool exeTrans( string[] arr )
{
string str = "" ;
bool blResult;
OleDbConnection myConnection = CreatConnection();
OleDbTransaction myTrans = myConnection.BeginTransaction();
OleDbCommand myCommand = new OleDbCommand();
myCommand.Transaction = myTrans;
myCommand.Connection = myConnection;
try
{
for( int i = 0 ; i < arr.Length ; i++ )
{
if( arr[i] == null || arr[i].Trim() == "" )
continue ;
myCommand.CommandText = arr[i] ;
}
myTrans.Commit();
blResult = true;
}
catch( Exception ep )
{
str = ep.Message ;
myTrans.Rollback();
}
finally
{
myCommand.Connection.Close() ;
}
return blResult;
}
#endregion
调用exeTrans
exeTrans(arr);
参数是个sql语句数组跟数据库无关是什么意思?
比如说, InsertToDb操作,那么Do就是执行insert语句,而Undo则执行相应的Delete语句,
而SavePicture操作, 那么Do就是把图片保存在一个文件夹内,而Undo就是则相反,从文件夹内删除.
你认准你的不是数据库了>
你这样试试
你该怎么删除怎么删除!
try
{
删除信息;//Copy一个这样的文件到其它目录!这样就可以恢复了!一旦删除信息不出错,
//就不用判断删除图片出不出错了!你怎么学的这么死呀!
删除图片;}
catch
{恢复信息;
}
listhome(我听见猪来自地铁和人海) 说的是聪明和变通的方法。
都厉害,感谢
用事务来实现
两个操作都成功就递交
有一个不成功就rollback
一般转帐系统都是这样做的
你认准你的不是数据库了>
你这样试试
你该怎么删除怎么删除!
try
{
删除信息;//Copy一个这样的文件到其它目录!这样就可以恢复了!一旦删除信息不出错,
//就不用判断删除图片出不出错了!你怎么学的这么死呀!
删除图片;}
catch
{恢复信息;
}^_^·~这个方法最好了~
try
{银行转账;
卖出货物;
}
catch
{
货款还给银行
卖出货物进入库存;
}这样一定安全吗?如果银行转账完了以后,突然asp.net服务器停电,那该怎么办?很明显,catch中的语句肯定不会被执行。