Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用C#导出SQLite数据库,最佳实践_C#_Database_Sqlite_Export - Fatal编程技术网

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

使用C#导出SQLite数据库,最佳实践,c#,database,sqlite,export,C#,Database,Sqlite,Export,我正在尝试为我的数据库应用程序实现导出功能。我使用的是C#,并且使用的是C#的SQlite包装。请原谅我对数据库概念/常用用法的无知,这是我的第一个数据库应用程序 导出: 很容易,SQLite数据库存储在单个s3db文件中。所以,要导出,我只需要使用System.IO.file.copy复制该文件?这是最好的方法吗?最后,对于导出,在复制文件之前是否需要关闭所有数据库连接?同样,针对这种情况的最佳实践将有很大帮助。。。在这种情况下,有几件事我不确定。例如 如果数据库很大,复制需要一段时间怎么办?

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

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

如果数据库很大,复制需要一段时间怎么办?用户可以开始导出,然后立即尝试向数据库中插入一些内容,这显然是个问题。复制时是否应锁定程序


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

我为SQL Server CE提供了类似的功能,这在概念上与sqlite非常相似。最安全的处理方法是您建议的方式:关闭所有数据库连接并防止用户再次打开(我通过显示备份进度的整个应用程序的模式窗口来处理此问题)。同样,我还没有用sqlite本身来实现,但用SQLServerCE,它只是一个简单的文件拷贝


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

我为SQL Server CE提供了类似的功能,这在概念上与sqlite非常相似。最安全的处理方法是您建议的方式:关闭所有数据库连接并防止用户再次打开(我通过显示备份进度的整个应用程序的模式窗口来处理此问题)。同样,我还没有用sqlite本身来实现,但用SQLServerCE,它只是一个简单的文件拷贝


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

复制文件的优点在于,另一种方法,即重新创建数据库和插入记录,肯定会花费更多的时间。如果你的应用程序允许更改源文件或导出文件,你肯定应该锁定该操作。

复制该文件的好处在于,另一种方法,即重新创建数据库和插入记录,肯定会花费更多的时间。如果你的应用程序允许更改源或导出,你肯定应该锁定该操作。

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

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


例如,请参见。

中的“将整个数据库转换为ASCII文本文件”,复制是最简单的方法,但我不确定这是否是最好的方法。除了必须确保在复制过程中锁定文件外,您可能还希望将数据转储为比所使用的特定SQLite版本的二进制表示形式更便于移植的格式

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


例如,请参见。

MessageBox.Show()中的“将整个数据库转换为ASCII文本文件”?我刚刚创建了一个Windows窗体来显示进度,并计划将其设置为不可移动和不可关闭。在我的ProgressForm代码中我会叫它吗?谢谢你的贡献!对不起,我没想清楚。要向整个应用程序显示窗体模式,请创建该窗体的实例,并调用ShowDialog()而不是调用show(),但同样的规则适用于不传入所有者以使其成为整个应用程序的模式。也许可以使对话框不可移动,但如果这样做了,作为一个用户,这会激怒我。您可以通过移除控制框并取消表单触发的任何关闭事件来使其不可关闭。尽管没有任何东西可以阻止用户强制关闭整个应用程序。MessageBox.Show()在哪里?我刚刚创建了一个Windows窗体来显示进度,并计划将其设置为不可移动和不可关闭。在我的ProgressForm代码中我会叫它吗?谢谢你的贡献!对不起,我没想清楚。要向整个应用程序显示窗体模式,请创建该窗体的实例,并调用ShowDialog()而不是调用show(),但同样的规则适用于不传入所有者以使其成为整个应用程序的模式。也许可以使对话框不可移动,但如果这样做了,作为一个用户,这会激怒我。您可以通过移除控制框并取消表单触发的任何关闭事件来使其不可关闭。虽然没有任何东西可以阻止用户强制关闭整个应用程序。既然我知道复制文件是正确的方法,那么如何创建模式windows窗体以显示进度条?既然我知道复制文件是正确的方法,那么如何创建模式windows窗体以显示进度条?