我正在尝试为我的数据库应用程序实现导出功能。我正在使用C#并使用我正在使用的C#的SQlite包装器。请原谅我对数据库概念/常用的无知,这是我的第一个数据库应用程序。
导出 很容易,SQLite数据库存储在一个s3db文件中。那么,要导出,我只需要使用System.IO.File.Copy复制该文件?这是最好的方法吗?最后,通过导出,我是否需要在复制文件之前关闭所有数据库连接?同样,针对这种情况的最佳实践将是一个很大的帮助...我不确定在这种情况下的一些事情。例如......
如果数据库很大并且副本需要一段时间怎么办?用户可以开始导出,然后立即尝试在数据库中插入一些东西,这显然是一个问题。我应该在复制时锁定程序吗?
一如既往,感谢您的帮助。
答案 0 :(得分:1)
我为SQL Server CE做了类似的功能,它在概念上与sqlite非常相似。处理它的最安全的方法是你的建议:关闭所有数据库连接并防止用户再打开(我在整个应用程序上显示了备份进度的模态窗口处理了这个)。同样,我还没有使用sqlite本身,但使用SQL Server CE,它是一个简单的文件副本。
要在WinForms应用程序的整个应用程序上创建窗口模式,只需使用MessageBox.Show(),并且不指定所有者。
答案 1 :(得分:0)
复制文件的好处很简单,替代方法是重新创建数据库并插入记录,这肯定会花费更多的时间。如果您的应用允许更改源或导出,您肯定应该锁定该操作。
答案 2 :(得分:0)
复制是最简单的方法,但我不确定这是最好的方法。除了必须确保在复制期间锁定文件外,您可能希望将数据转储为比您正在使用的特定SQLite版本的二进制表示更便携的格式。
将所有数据转储到文件中就像复制一样简单。
请参阅this page中的“将整个数据库转换为ASCII文本文件”。