首页 新闻 赞助 找找看

文件操作和数据库操作能作为一个事务控制吗?

0
悬赏园豆:30 [已关闭问题] 关闭于 2012-04-02 01:37

我所知道的数据库事务操作,只能是数据库的动作。
现在有一个数据库操作,一个文件操作,怎么把他控制城“事务”的形式呢?
比如:要上传一个图片并把上传后的文件全路径插入到表里,
很显然,这两个操作必须一并完成或一并撤销,不然光有数据库记录或光完成图片上传都是没有意义的。
怎么实现这个“事务”?

跟着阿笨一起玩.NET的主页 跟着阿笨一起玩.NET | 初学一级 | 园豆:9
提问于:2012-03-17 09:02
< >
分享
所有回答(5)
0

事物其实就是在一部分不成功的情况下,具有撤销功能。你只要把握这一点就可以了。

你说的这个问题,应该是先上传图片,之后将数据插入数据库。注意回滚的时候要将上传的图片删除(如果上传成功的话)。

小小刀 | 园豆:1991 (小虾三级) | 2012-03-17 10:18
0

可以使用DTC事務。

在事务范围内,可纳入事务管理的资源,即可以在事务正常执行后提交生效,在事务失败可以回滚恢复到事务启动前状态的资源成为事务资源。最常见的事务资源就是常用的数据库操作。但是在vista开始引入了两个核心事务资源:TxF事务文件和TxR事务注册表。

可用的事务资源:

 sql server事务资源

Sql 2005sql 2008的事务资源是新sql serverLTM事务管理器可以管理这类事务。

核心事务资源

Vista开始引入的TxF事务文件和TxR事务注册表。可以对文件和注册表进行事务性操作。KTM可以管理这类资源。

無限遐想 | 园豆:3740 (老鸟四级) | 2012-03-17 10:21
0

这依赖于操作系统是否支持事务性文件系统。

这篇文件推荐了一个开源系统:

http://www.infoq.com/cn/news/2008/01/file-systems-transactions

在Vista以上版本可以使用 CAtlTransactionManager 来实现文件事务操作。

Launcher | 园豆:45045 (高人七级) | 2012-03-17 10:58
0

数据库的事务有数据库管理,其他代码中的“事务”需要你进行处理。

比如,你上传完毕后,检查文件是否存在。如果不存在,就将相关东西删除等等。

好好理解下事务的概念和作用。

Bruce鑫 | 园豆:260 (菜鸟二级) | 2012-03-18 08:53
0

可以这样

//检测文件上传成功与否,此处代码省略

try

{

//开始事务,最后提交事务

}

catch(e)

{

//出错到这里的话肯定是事务没有提交成功

//回滚事务,并删除文件

}

卓酷 | 园豆:65 (初学一级) | 2012-04-27 12:03
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册