Использование базы данных SQLite в приложении Windows
Вы можете использовать SQLite для хранения и извлечения данных в упрощенной базе данных на устройстве пользователя. В этом руководстве показано, как это сделать в приложениях пакета SDK для приложений для приложений windows.
Некоторые преимущества использования SQLite для локального хранения данных
✔️ SQLite является упрощенным и автономным. Это библиотека кода без других зависимых компонентов. Ее не требуется настраивать.
✔️ Тут нет сервера базы данных. Клиент и сервер работают в одном процессе.
✔️ SQLite находится на общедоступном домене, поэтому вы можете свободно использовать и распространять ее в вашем приложении.
✔️ SQLite работает на разных платформах и архитектурах.
Подробнее о SQLite см. здесь.
Выбор слоя абстрагирования
Рекомендуется использовать Entity Framework Core или библиотеку SQLite с открытым кодом, созданную корпорацией Майкрософт.
Entity Framework Core
Entity Framework (EF) — это объектно-реляционный модуль сопоставления, позволяющий разработчикам работать с реляционными данными с помощью объектов, специализированных для доменов. Если вы уже использовали эту платформу для работы с данными в других приложениях .NET, вы можете использовать тот же код в приложении пакета SDK для приложений Windows, и он будет работать с соответствующими изменениями в строка подключения.
Чтобы испытать ее, см. раздел Начало работы с EF Core.
Библиотеке SQLite
Библиотека Microsoft.Data.Sqlite реализует интерфейсы в пространстве имен System.Data.Common. Майкрософт активно поддерживает эти реализации и предоставляет интуитивно понятную оболочку для низкоуровневых собственных API-интерфейсов SQLite.
В остальных разделах этого руководства приведены инструкции по работе с этой библиотекой.
Настройка решения для использования библиотеки Microsoft.Data.SQlite
Мы начнем с базового проекта пакета SDK для приложений Windows, а затем установим пакет NuGet SQLite.
Все поддерживаемые версии Windows поддерживают SQLite, поэтому приложению не нужно упаковать библиотеки SQLite. Вместо этого ваше приложение может использовать версию SQLite, которая поставляется вместе с Windows. Это обеспечивает следующие преимущества.
✔️ Уменьшает размер приложения, так как не требуется скачивать двоичную библиотеку SQLite, а затем упаковывать ее в качестве части приложения.
✔️ Отсутствие необходимости в принудительной передаче новой версии вашего приложения пользователям, если SQLite опубликует важные исправления ошибок и уязвимостей безопасности в SQLite. Версия Windows SQLite обслуживается корпорацией Майкрософт совместно с SQLite.org.
✔️ Загрузка приложения может быть быстрее, так как, скорее всего, версия SDK-пакета SQLite будет уже загружена в память.
Начнем с добавления класса в проект с именем DataAccess. Если вы планируете предоставить общий доступ к логике доступа к данным с другим клиентским кодом, можно использовать проект библиотеки классов .NET для хранения кода доступа к данным, но мы не будем использовать его в нашем примере.
Щелкните правой кнопкой мыши решение, а затем нажмите кнопку Управление пакетами NuGet для решения.

На этом этапе у вас есть выбор. Можно использовать версию SQLite, которая входит в состав Windows, или если по какой-либо причине вы хотите использовать конкретную версию SQLite, можно добавить библиотеку SQLite в пакет. Мы будем использовать версию SQLite, которая входит в состав Windows.
Перейдите на вкладку «Обзор «, найдите пакет Microsoft.Data.SQLite и установите последнюю стабильную версию.

Добавление данных в базу данных SQLite и их извлечение
Мы выполним следующие действия.
1️⃣ Подготовка класса доступа к данным.
2️⃣ Инициализация базы данных SQLite.
3️⃣ Вставка данных в базу данных SQLite.
4️⃣ Извлечение данных из базы данных SQLite.
5️⃣ Добавление базового пользовательского интерфейса.
Подготовка класса доступа к данным
DataAccess Откройте класс в проекте и сделайте этот класс статическим.
Хотя в нашем примере код доступа к данным помещается в статический класс, это вариант разработки и является полностью необязательным.
public static class DataAccess
Добавьте следующие using инструкции в начало этого файла.
using Microsoft.Data.Sqlite; using System.Collections.Generic;
Инициализация базы данных SQLite
Добавьте метод в DataAccess класс, который инициализирует базу данных SQLite.
public async static void InitializeDatabase() < await ApplicationData.Current.LocalFolder .CreateFileAsync("sqliteSample.db", CreationCollisionOption.OpenIfExists); string dbpath = Path.Combine(ApplicationData.Current.LocalFolder.Path, "sqliteSample.db"); using (var db = new SqliteConnection($"Filename=")) < db.Open(); string tableCommand = "CREATE TABLE IF NOT " + "EXISTS MyTable (Primary_Key INTEGER PRIMARY KEY, " + "Text_Entry NVARCHAR(2048) NULL)"; var createTable = new SqliteCommand(tableCommand, db); createTable.ExecuteReader(); >>
Приведенный выше код, использующий ApplicationData элементы, будет работать только для упакованных приложений, работающих в контейнере приложений. Все остальные приложения Windows должны обращаться к ApplicationData членам через класс ApplicationDataManager .
Этот код создает базу данных SQLite и сохраняет ее в локальном хранилище данных приложения.
В этом примере мы используем имя базы данных sqlliteSample.db , но вы можете использовать любое имя при условии, что оно будет использоваться во всех объектах SqliteConnection, экземпляры которых необходимо создать. В рабочем приложении сведения о подключении, такие как имя файла базы данных, должны храниться в конфигурации приложения, а не жестко закодированы (см. статью «Добавление Конфигурация приложений Azure с помощью visual Studio Подключение ed Services«).
В конструкторе файла App.xaml.cs проекта вызовите InitializeDatabase метод DataAccess класса. Это обеспечит создание или открытие базы данных при каждом запуске приложения.
public App()
Вставка данных в базу данных SQLite
Добавьте метод в DataAccess класс, который вставляет данные в базу данных SQLite. Этот код использует параметры в запросе для предотвращения атак путем внедрения кода SQL.
public static void AddData(string inputText) < string dbpath = Path.Combine(ApplicationData.Current.LocalFolder.Path, "sqliteSample.db"); using (var db = new SqliteConnection($"Filename=")) < db.Open(); var insertCommand = new SqliteCommand(); insertCommand.Connection = db; // Use parameterized query to prevent SQL injection attacks insertCommand.CommandText = "INSERT INTO MyTable VALUES (NULL, @Entry);"; insertCommand.Parameters.AddWithValue("@Entry", inputText); insertCommand.ExecuteReader(); >>
Извлечение данных из базы данных SQLite
Добавьте метод, который получает все строки данных из таблицы в базе данных SQLite.
public static List GetData() < var entries = new List(); string dbpath = Path.Combine(ApplicationData.Current.LocalFolder.Path, "sqliteSample.db"); using (var db = new SqliteConnection($"Filename=")) < db.Open(); var selectCommand = new SqliteCommand ("SELECT Text_Entry from MyTable", db); SqliteDataReader query = selectCommand.ExecuteReader(); while (query.Read()) < entries.Add(query.GetString(0)); >> return entries; >
Метод Read считывает строки возвращаемых данных. Возвращается true , если есть строки слева, в противном случае возвращается false .
Метод GetString возвращает значение конкретного столбца в виде строки. Он принимает целое число, представляющее собой отсчитываемый от нуля порядковый номер столбца необходимых данных. Можно использовать похожие методы, такие как GetDataTime и GetBoolean . Выберите метод в зависимости от типа данных в столбце.
Порядковый номер параметра не так важен в этом примере, так как мы выбираем все записи в одном столбце. Тем не менее, если несколько столбцов являются частью запроса, используйте порядковое значение для получения столбца, из которого требуется извлечь данные.
Добавление базового пользовательского интерфейса
В файле MainWindow.xaml проекта добавьте следующий код XAML.
Этот базовый пользовательский интерфейс предоставляет пользователю поле TextBox , которое можно использовать для ввода строки, которую мы добавим в базу данных SQLite. Мы подключимся Button в этом пользовательском интерфейсе к обработчику событий, который будет получать данные из базы данных SQLite и затем отображать их в ListView .
В файле MainWindow.xaml.cs добавьте следующий обработчик. Это метод, который мы связали с кнопкой Click событие Button в пользовательском интерфейсе.
private void AddData(object sender, RoutedEventArgs e)
Мы также хотим убедиться, что все существующие данные загружаются при запуске приложения. Добавьте строку кода в MainWindow конструктор для вызова GetData() .
public MainWindow()
Вот и все. Изучите Microsoft.Data.Sqlite чтобы узнать, что еще можно сделать с вашей базой данных SQLite. Ознакомьтесь со ссылками ниже, чтобы узнать о других способах использования данных в приложениях Windows.
Следующие шаги
Подключение приложения непосредственно к базе данных SQL Server
Совместное использование кода между разными приложениями на различных платформах
Добавление страниц с основными и подробными данными с помощью серверов Azure SQL
См. статью Customer Orders Database sample (Пример базы данных заказов клиентов).
SQLite — Установка
SQLite славится своей отличной нулевой конфигурацией, что означает, что не требуется сложной настройки или администрирования. В этой главе мы рассмотрим процесс настройки SQLite в Windows, Linux и Mac OS X.
Установка SQLite в Windows
- Шаг 1 — Перейдите на страницу загрузки SQLite и загрузите предварительно скомпилированные двоичные файлы из раздела Windows.
- Шаг 2. Загрузите файлы zlip-sqlite-win32 — *. Zip и sqlite-dll-win32 — *.zip .
- Шаг 3 — Создайте папку C:\> sqlite и разархивируйте над двумя zip-файлами в этой папке, которые предоставят вам sqlite3.def, sqlite3.dll и sqlite3.exe файлы.
- Шаг 4 — Добавьте C: \> sqlite в переменную среды PATH и, наконец, перейдите в командную строку и выполните команду sqlite3 , которая должна отобразить следующий результат.
C:\>sqlite3 SQLite version 3.25.3 2018-11-29 17:11:07 Enter ".help" for instructions Enter SQL statements terminated with a ";" sqlite>
Установка SQLite в Linux
- Шаг 1 — Перейдите на страницу загрузки SQLite и загрузите sqlite-autoconf — *. Tar.gz из раздела исходного кода.
- Шаг 2 — Запустите следующую команду:
$tar xvfz sqlite-autoconf-3071502.tar.gz $cd sqlite-autoconf-3071502 $./configure --prefix = /usr/local $make $make install
Как установить расширение для SQLite на Windows?
Установить расширение в SQLite, если готового файла библиотеки найти не удалось, как оказалось, не так просто. Полного и подробного гайда я так и не нашёл, так что пришлось по крупицам собирать информацию, и теперь для таких же странствующих в поисках ответов, как и я, вот 10 шагов для решения поставленной задачи.
Отслеживать
задан 15 июн 2022 в 20:11
157 10 10 бронзовых знаков
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Вот полное руководство по установке расширения для SQLite на Windows:
- Установите MinGW с GCC
- Скачайте .c файл желаемого расширения (например, uuid.c)
- Скачайте с этой страницыSource Code и Precompiled Binaries for Windows
- Поместите файлы из «sqlite-dll-win64-x64-XXXXXXX.zip» (или win32) и «sqlite-tools-win32-x86-XXXXXXX.zip» в папку System32
- Поместите желаемый файл uuid.c и файлы из «sqlite-amalgamation-XXXXXXX.zip» в любую папку по своему усмотрению
- Запустите CMD и перейдите в директорию с файлом uuid.c
- Введите в консоль gcc -g -shared uuid.c -o uuid.so
- Если кто-либо (даже вы сами) говорит вам, что на Windows вам следует использовать расширение .dll, плюньте ему в лицо
- Переместите полученный uuid.so файл в папку System32
- Запустите CMD ещё раз и введите команду .load uuid ИЛИ введите SELECT load_extension(‘uuid’) в качестве SQL-скрипта
На этом всё!
Отслеживать
ответ дан 15 июн 2022 в 20:11
157 10 10 бронзовых знаков
Вы серьезно предлагаете вместо скачивания библиотеки ставить mingw и gcc и считаете что это проще чем скачать файл и закинуть в системную папку?)
15 июн 2022 в 20:22
Если библиотеку легко найти в уже скомпилированном виде, то этот вариант очевиден и даже в упоминании не нуждается, так что не нужно, пожалуйста, язвить
Начало работы с базами данных на подсистема Windows для Linux
Это пошаговое руководство поможет вам приступить к подключению проекта в WSL к базе данных. Начало работы с MySQL, PostgreSQL, MongoDB, Redis, Microsoft SQL Server или SQLite.
Необходимые компоненты
- Под управлением Windows 11 или Windows 10 обновлено до версии 2004, сборка 19041 или более поздняя.
- Установите дистрибутив Linux с помощью WSL и создайте имя пользователя и пароль Linux.
Различия между системами баз данных
Некоторые популярные варианты для системы базы данных:
- MySQL (SQL)
- PostgreSQL (SQL)
- Microsoft SQL Server (SQL)
- SQLite (SQL)
- MongoDB (NoSQL)
- Redis (NoSQL)
MySQL — это реляционная база данных SQL с открытым исходным кодом, упорядочение данных в одну или несколько таблиц, в которых типы данных могут быть связаны друг с другом. Это вертикально масштабируемый, что означает, что одна конечная машина будет выполнять для вас работу. В настоящее время он является наиболее широко используемым в четырех системах баз данных.
PostgreSQL (иногда называют Postgres) также реляционной базой данных SQL с открытым исходным кодом с акцентом на расширяемость и соответствие стандартам. Теперь она также может обрабатывать JSON, однако обычно лучше подходит для структурированных данных, вертикального масштабирования и требований ACID, таких как электронная коммерция и финансовые транзакции.
Microsoft SQL Server включает SQL Server в Windows, SQL Server на Linux и SQL в Azure. Это также реляционные системы управления базами данных, настроенные на серверах с основной функцией хранения и извлечения данных, запрашиваемых программными приложениями.
SQLite — это локальная база данных с открытым кодом, основанная на файлах, бессерверная база данных, известная как переносимость, надежность и хорошая производительность даже в средах с низкой памятью.
MongoDB — это база данных документов NoSQL с открытым исходным кодом, предназначенная для работы с JSON и хранения данных без схемы. Он является горизонтально масштабируемым, что означает, что несколько небольших компьютеров будут выполнять работу для вас. Это хорошо для гибкости и неструктурированных данных, а также кэширования аналитики в режиме реального времени.
Redis — это хранилище данных с открытым исходным кодом NoSQL в памяти. Он использует пары «ключ-значение» для хранения вместо документов.
Установка MySQL
Чтобы установить MySQL в дистрибутиве Linux, работающем в WSL, просто следуйте инструкциям по установке MySQL в Linux в документации MySQL. Возможно, сначала потребуется включить системную поддержку в wsl.conf файле конфигурации.
Пример использования дистрибутива Ubuntu:
- Откройте командную строку Ubuntu и обновите доступные пакеты: sudo apt update
- После обновления пакетов установите MySQL с помощью следующих компонентов: sudo apt install mysql-server
- Подтвердите установку и получите номер версии: mysql —version
- Запустите MySQL Server или состояние проверка: systemctl status mysql
- Чтобы открыть запрос MySQL, введите: sudo mysql
- Чтобы просмотреть доступные базы данных, в командной строке MySQL введите: SHOW DATABASES;
- Чтобы создать новую базу данных, введите: CREATE DATABASE database_name;
- Чтобы удалить базу данных, введите: DROP DATABASE database_name;
Дополнительные сведения о работе с базами данных MySQL см. в документации по MySQL.
Чтобы работать с базами данных MySQL в VS Code, попробуйте расширение MySQL.
Кроме того, может потребоваться запустить включенный скрипт безопасности. Это изменяет некоторые из менее безопасных параметров по умолчанию для таких элементов, как удаленные имена для входа в корне и примеры пользователей. Этот скрипт также включает шаги по изменению пароля для корневого пользователя MySQL. Чтобы запустить скрипт безопасности, выполните следующие действия:
- Запустите сервер MySQL: sudo service mysql start
- Запустите запросы скрипта безопасности: sudo mysql_secure_installation
- В первом запросе будет предложено настроить компонент VALIDATE PASSWORD, который можно использовать для проверки надежности пароля MySQL. Если вы хотите задать простой пароль, этот компонент не следует задавать.
- Затем вы настроите или измените пароль для корневого пользователя MySQL, решите, следует ли удалять анонимных пользователей, разрешать корневому пользователю входить как локально, так и удаленно, решать, следует ли удалить тестовую базу данных, а затем решить, следует ли немедленно перезагрузить таблицы привилегий.
Установка PostgreSQL
Установка PostgreSQL в WSL (т. е. Ubuntu):
- Откройте терминал WSL (т. е. Ubuntu).
- Обновите пакеты Ubuntu: sudo apt update
- После обновления пакетов установите PostgreSQL (и пакет -contrib с некоторыми полезными служебными программами) с помощью команды sudo apt install postgresql postgresql-contrib .
- Подтвердите установку и получите номер версии: psql —version
Есть 3 команды, о которых необходимо знать после установки PostgreSQL:
- sudo service postgresql status позволяет проверить состояние базы данных.
- sudo service postgresql start позволяет запустить базу данных.
- sudo service postgresql stop позволяет завершить работу с базой данных.
Администратору по умолчанию postgres требуется назначать пароль для подключения к базе данных. Чтобы задать пароль, сделайте следующее:
- Введите команду: sudo passwd postgres .
- Появится запрос на ввод нового пароля.
- Закройте и снова откройте терминал.
Чтобы запустить PostgreSQL с помощью оболочки psql , выполните следующую команду:
- Запустите службу postgres: sudo service postgresql start
- Подключитесь к службе postgres и откройте оболочку psql: sudo -u postgres psql
После успешного входа в оболочку psql вы увидите, что ваша командная строка будет выглядеть следующим образом: postgres=#
Кроме того, вы можете открыть оболочку psql, перейдя к пользователю postgres с помощью команды su — postgres , а затем введя команду psql .
Чтобы выйти из postgres=# ввод, \q или используйте сочетание клавиш: CTRL+D
Чтобы узнать, какие учетные записи пользователей были созданы в установке PostgreSQL, в терминале WSL введите psql —command=»\du» или просто \du , если оболочка psql открыта. Эта команда будет отображать столбцы: имя пользователя учетной записи, список атрибутов ролей и член групп ролей. Чтобы вернуться в командную строку, введите: q .
Дополнительные сведения о работе с базами данных PostgreSQL см. в документации PostgreSQL.
Чтобы работать с базами данных PostgreSQL в VS Code, попробуйте расширение PostgreSQL.
Установка MongoDB
Сведения об установке MongoDB см. в документации Mongodb: Установка MongoDB Community Edition в Linux
Установка MongoDB может потребовать немного разных шагов в зависимости от дистрибутива Linux, используемого для установки. Кроме того, обратите внимание, что установка MongoDB может отличаться в зависимости от версии, которую вы стремитесь установить. Используйте раскрывающийся список версий в левом верхнем углу документации MongoDB, чтобы выбрать версию, которая соответствует вашей цели. Наконец, может потребоваться включить системную поддержку в wsl.conf файле конфигурации дистрибутива Linux, который вы используете с WSL. Команда systemctl является частью системы инициализации системы и может не работать, если дистрибутив использует systemv.
VS Code поддерживает работу с базами данных MongoDB с помощью расширения Azure CosmosDB. Вы можете создавать базы данных MongoDB, отправлять к ним запросы, а также управлять этими базами данных из VS Code. Дополнительные сведения см. в документации по VS Code: работа с MongoDB.
Дополнительные сведения см. в документации по MongoDB:
- Общие сведения об использовании MongoDB
- Создание пользователей
- CRUD: создание, чтение, обновление, удаление
- Справочная документация
Установка Microsoft SQL Server
Чтобы установить SQL Server в дистрибутиве Linux, запущенном WSL, SQL Server на Linux. Чтобы работать с базами данных Microsoft SQL Server в VS Code, попробуйте расширение MSSQL.
Установка SQLite
Установка SQLite в WSL (т. е. Ubuntu):
- Откройте терминал WSL (т. е. Ubuntu).
- Обновите пакеты Ubuntu: sudo apt update
- После обновления пакетов установите SQLite3 с помощью следующих компонентов: sudo apt install sqlite3
- Подтвердите установку и получите номер версии: sqlite3 —version
Чтобы создать тестовую базу данных с именем example.db, введите: sqlite3 example.db
Чтобы просмотреть список баз данных SQLite, введите следующее: .databases
Чтобы просмотреть состояние базы данных, введите: .dbinfo ?DB?
База данных будет пуста после создания. Вы можете создать новую таблицу для базы данных с помощью CREATE TABLE empty (kol INTEGER); .
Теперь введите .dbinfo ?DB? созданную базу данных.
Чтобы выйти из запроса SQLite, введите следующее: .exit
Дополнительные сведения о работе с базой данных SQLite см. в документации ПО SQLite.
Чтобы работать с базами данных SQLite в VS Code, попробуйте расширение SQLite.
Установка Redis
Установка Redis в WSL (т. е. Ubuntu):
- Откройте терминал WSL (т. е. Ubuntu).
- Обновите пакеты Ubuntu: sudo apt update
- После обновления пакетов установите Redis со следующими параметрами: sudo apt install redis-server
- Подтвердите установку и получите номер версии: redis-server —version
Чтобы начать работу сервера Redis, выполните приведенные далее действия. sudo service redis-server start
Проверьте, работает ли redis (redis-cli — это служебная программа интерфейса командной строки для беседы с Redis): redis-cli ping это должно вернуть ответ PONG.
Чтобы остановить запуск сервера Redis, выполните приведенные действия. sudo service redis-server stop
Дополнительные сведения о работе с базой данных Redis см. в документации Redis.
Чтобы работать с базами данных Redis в VS Code, попробуйте расширение Redis.
Просмотр запущенных и настроенных псевдонимов профилей служб
Чтобы просмотреть службы, которые в настоящее время запущены в дистрибутиве WSL, введите: service —status-all
Вводить sudo service mongodb start или sudo service postgres start и sudo -u postgrest psql может быть утомительно. Однако, вы можете рассмотреть возможность установки псевдонимов в файле .profile на WSL, чтобы сделать эти команды более быстрыми в использовании и легкими в запоминании.
Настройка собственного пользовательского псевдонима или ярлыка для выполнения этих команд:
- Откройте терминал WSL и введите cd ~ , чтобы убедиться, что вы находитесь в корневом каталоге.
- Откройте файл .profile , управляющий настройками терминала, в текстовом редакторе терминала Nano: sudo nano .profile .
- В нижней части файла (не меняйте настройки # set PATH ) добавьте следующее:
# My Aliases alias start-pg='sudo service postgresql start' alias run-pg='sudo -u postgres psql'
Устранение неполадок
Ошибка: недопустимый аргумент fdatasync для синхронизации каталогов
Убедитесь, что дистрибутив Linux запущен в режиме WSL 2. Сведения о переходе с WSL 1 на WSL 2 см. в разделе «Настройка версии распространения» на WSL 1 или WSL 2.