如果创建出错,请删除数据库

时间:2013-03-06 07:58:20

标签: c# sql database visual-studio

我创建了一个C#应用程序,该应用程序在首次启动时创建了一个数据库,database这个SQLiteDatabase将存储在项目文件夹中。填写此database的过程需要5到10秒左右的中档笔记本。所以在低预算的笔记本电脑上会慢一些。没有太大的机会,但如果有人强制关闭应用程序,而database正在创建中,该怎么办?或者如果发生电源故障怎么办?这样做的结果将出现在一个破碎的database中,这将永远不会奏效。

我正在Database中创建我的c#,并在c#填写,trycatch内的delete {我是Database每当catch中的代码被调用时,{} {}为database?我的应用程序在应用程序开始时检查是否已经有Delete是或否?如果没有,它将被创建。

我该怎么办?发生错误时database catch(代码通过using(TransactionScope tran = new TransactionScope()) { CallAMethodThatDoesSomeWork(); CallAMethodThatDoesSomeMoreWork(); tran.Complete(); } )或者有人为我的问题找到了更好的解决方案吗?

提前致谢!

编辑:

我得到了一些答案:

我看到以下代码,我该如何使用这段代码?我应该将创建我的数据库的代码放在CallAMethodThatDoesSomeWork方法中吗?

{{1}}

3 个答案:

答案 0 :(得分:2)

您应该使用事务并创建在其下使用数据库的所有命令。 如果应用程序崩溃,则不会创建任何内容。 这是一种标准方法。 例如,请参阅here

答案 1 :(得分:2)

Sqlite似乎支持transactions。因此,打开一个事务,然后填充数据,只有COMMIT才能完成。

每当您的应用程序启动时,您都可以确定数据库中是否存在 no 数据(在这种情况下,上次尝试填充时出现问题)。

答案 2 :(得分:0)

为什么不使用begin和commit事务?如果发生任何错误,则回滚事务。

有关交易的更多信息,请参阅以下链接。

http://www.sqlite.org/lang_transaction.html