使用C#导出SQLite数据库,最佳实践

时间:2010-12-18 04:44:30

标签: c# database sqlite export

我正在尝试为我的数据库应用程序实现导出功能。我正在使用C#并使用我正在使用的C#的SQlite包装器。请原谅我对数据库概念/常用的无知,这是我的第一个数据库应用程序。

导出  很容易,SQLite数据库存储在一个s3db文件中。那么,要导出,我只需要使用System.IO.File.Copy复制该文件?这是最好的方法吗?最后,通过导出,我是否需要在复制文件之前关闭所有数据库连接?同样,针对这种情况的最佳实践将是一个很大的帮助...我不确定在这种情况下的一些事情。例如......

如果数据库很大并且副本需要一段时间怎么办?用户可以开始导出,然后立即尝试在数据库中插入一些东西,这显然是一个问题。我应该在复制时锁定程序吗?

一如既往,感谢您的帮助。

3 个答案:

答案 0 :(得分:1)

我为SQL Server CE做了类似的功能,它在概念上与sqlite非常相似。处理它的最安全的方法是你的建议:关闭所有数据库连接并防止用户再打开(我在整个应用程序上显示了备份进度的模态窗口处理了这个)。同样,我还没有使用sqlite本身,但使用SQL Server CE,它是一个简单的文件副本。

要在WinForms应用程序的整个应用程序上创建窗口模式,只需使用MessageBox.Show(),并且不指定所有者。

答案 1 :(得分:0)

复制文件的好处很简单,替代方法是重新创建数据库并插入记录,这肯定会花费更多的时间。如果您的应用允许更改源或导出,您肯定应该锁定该操作。

答案 2 :(得分:0)

复制是最简单的方法,但我不确定这是最好的方法。除了必须确保在复制期间锁定文件外,您可能希望将数据转储为比您正在使用的特定SQLite版本的二进制表示更便携的格式。

将所有数据转储到文件中就像复制一样简单。

请参阅this page中的“将整个数据库转换为ASCII文本文件”。