2

我创建了一个C#应用程序,该应用程序在首次启动时创建了一个数据库,这databaseSQLiteDatabase存储在项目文件夹中。database在中档笔记本电脑上填充这个过程大约需要 5 到 10 秒。所以在低预算笔记本上它会更慢。机会不大,但是如果有人database在创建应用程序时强行关闭应用程序怎么办?或者如果发生电源故障怎么办?这样做的结果将是一个损坏的database,这将永远不会起作用。

我正在创建我Database的 inc#并从中填充它c#,这发生在 atrycatch中,我应该deleteDatabase何时catch调用中的代码吗?我的应用程序在应用程序开始时检查是否已经存在database是或否?如果没有,它将被创建。

我该怎么办?Delete何时发生database错误(代码进入低谷catch)或有人对我的问题有更好的解决方案?

提前致谢!

编辑:

已经给了我一些答案:

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

using(TransactionScope tran = new TransactionScope()) {
    CallAMethodThatDoesSomeWork();
    CallAMethodThatDoesSomeMoreWork();
    tran.Complete();
}
4

3 回答 3

2

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

于 2013-03-06T08:00:55.980 回答
2

Sqlite 似乎支持事务。所以,打开一个事务,然后填充数据,并且只有COMMIT当它全部完成时。

每当您的应用程序启动时,您肯定可以检查数据库中是否没有数据(在这种情况下,您上次尝试填充它时出现了问题)。

于 2013-03-06T08:01:29.847 回答
0

为什么不使用开始和提交事务?如果发生任何错误,则回滚事务。

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

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

于 2013-03-06T08:06:07.887 回答