事物其实就是在一部分不成功的情况下,具有撤销功能。你只要把握这一点就可以了。
你说的这个问题,应该是先上传图片,之后将数据插入数据库。注意回滚的时候要将上传的图片删除(如果上传成功的话)。
可以使用DTC事務。
在事务范围内,可纳入事务管理的资源,即可以在事务正常执行后提交生效,在事务失败可以回滚恢复到事务启动前状态的资源成为事务资源。最常见的事务资源就是常用的数据库操作。但是在vista开始引入了两个核心事务资源:TxF事务文件和TxR事务注册表。
可用的事务资源:
新sql server事务资源
Sql 2005或sql 2008的事务资源是新sql server,LTM事务管理器可以管理这类事务。
核心事务资源
Vista开始引入的TxF事务文件和TxR事务注册表。可以对文件和注册表进行事务性操作。KTM可以管理这类资源。
这依赖于操作系统是否支持事务性文件系统。
这篇文件推荐了一个开源系统:
http://www.infoq.com/cn/news/2008/01/file-systems-transactions
在Vista以上版本可以使用 CAtlTransactionManager 来实现文件事务操作。
数据库的事务有数据库管理,其他代码中的“事务”需要你进行处理。
比如,你上传完毕后,检查文件是否存在。如果不存在,就将相关东西删除等等。
好好理解下事务的概念和作用。
可以这样
//检测文件上传成功与否,此处代码省略
try
{
//开始事务,最后提交事务
}
catch(e)
{
//出错到这里的话肯定是事务没有提交成功
//回滚事务,并删除文件
}