Я пытаюсь загрузить базу данных SQLite, которая будет встроена в мой исполняемый файл в качестве ресурса. Для тех, кому интересно, это потому, что я использую небольшую базу данных SQLite для хранения данных конфигурации, и я хотел бы отправить конфигурацию по умолчанию, встроенную в исполняемый файл (я ненавижу переносить файлы вместе с программой).
Это будет просто конфигурация по умолчанию. То есть мне не нужно изменять эту конфигурацию. Он статичен и не может быть изменен после того, как моя программа была построена.
Я использую оболочку System.Data.SQLite для SQLite.
Я могу получить доступ к байтовому потоку следующим образом:
using (var stream =
Assembly.GetExecutingAssembly().GetManifestResourceStream(resourceName)) {
// use of "stream" here.
}
Однако я Я не понимаю, как создать объект SQLiteConnection
из этого потока.
Простым выходом было бы просто создавать новый файл конфигурации каждый раз при загрузке программы, а затем сообщать SQLite о необходимости чтения из этот файл. Это, вероятно, сработает, но я бы хотел избежать этого метода - я планирую повторно использовать свое решение этой проблемы, чтобы также включить поддержку интернационализации (где каждый язык представляет собой [сжатую] базу данных SQLite, а язык по умолчанию встроен в исполняемый файл - a Пользователь мог бы добавить другие языки, просто скопировав базы данных на других языках в рабочий каталог программы.)
Меня не волнует стоимость памяти для хранения этой базы данных в памяти. Он будет очень маленьким (вероятно, менее 50 КБ), поэтому меня это не беспокоит. Очевидно, что если бы это была база данных большего размера, это могло бы быть проблемой.
Наконец, я знаю, что это может рассматриваться как плохой способ сохранения конфигурации. Хотя я согласен с тем, что решение на основе открытого текста подходит для случаев, когда пользователь вводит все свои настройки вручную, в основном это будет использоваться для настроек, которые пользователь не определяет явно. Например, для хранения положений различных закрепляемых окон в приложении или для хранения данных о том, где могут быть найдены внутренние ресурсы.
Спасибо за вашу помощь.