Экспорт базы данных SQLite с использованием C #, лучшие практики - PullRequest
1 голос
/ 18 декабря 2010

Я пытаюсь реализовать функцию экспорта для моего приложения базы данных.Я использую C # и у меня есть оболочка SQlite для C #, которую я использую.Извините за незнание концепций баз данных / общее использование, это мое первое приложение базы данных.

Экспорт: Достаточно легко, базы данных SQLite хранятся в одном файле s3db.Итак, для экспорта мне просто нужно скопировать этот файл с помощью System.IO.File.Copy?Это лучший способ сделать это?Наконец, при экспорте мне нужно закрыть все соединения с базой данных перед копированием файла?Опять же, лучшие практики для этой ситуации были бы очень полезны ... Я не уверен относительно некоторых вещей в этой ситуации.Например ...

Что если база данных огромна, а ее копирование занимает много времени?Пользователь может начать экспорт, а затем сразу же пойти и попытаться вставить что-то в базу данных, что, очевидно, будет проблемой.Стоит ли блокировать программу во время копирования?

Как всегда, спасибо за любую помощь.

Ответы [ 3 ]

1 голос
/ 18 декабря 2010

Я сделал похожую функциональность для SQL Server CE, которая очень похожа на sqlite по концепции. Самый безопасный способ справиться с этим - это то, что вы предложили: закрыть все соединения с базой данных и не допустить, чтобы пользователь больше не открывал (я обработал это с помощью модального окна для всего приложения, которое показывало ход резервного копирования). Опять же, я не сделал это с sqlite как таковым, но с SQL Server CE это была простая копия файла.

Чтобы сделать окно модальным для всего приложения WinForms, просто используйте MessageBox.Show () и не указывайте владельца.

0 голосов
/ 18 декабря 2010

Копирование - это самый простой способ, но я не уверен, что это лучший способ.Помимо необходимости убедиться, что вы блокируете файл во время копирования, вам может потребоваться вывести данные в формат, который немного более переносим, ​​чем просто двоичное представление конкретной версии SQLite, которую вы используете.

Сброс всех данных в файл так же прост, как и копирование.

См., Например: «Преобразование всей базы данных в текстовый файл ASCII» в на этой странице .

0 голосов
/ 18 декабря 2010

Преимущество копирования файла состоит в том, что альтернатива, воссоздание базы данных и вставка записей, несомненно, займет гораздо больше времени. Вы обязательно должны заблокировать эту операцию, если ваше приложение позволяет вносить изменения либо в источник, либо в экспорт.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...