Общие сведения о Microsoft.Data.Sqlite
Microsoft.Data.Sqlite — это упрощенный поставщик ADO.NET для SQLite. На основе этой библиотеки построен поставщик Entity Framework Core для SQLite. Тем не менее, ее также можно использовать независимо или с другими библиотеками доступа к данным.
Установка
Последняя стабильная версия доступна на сайте NuGet.
- Интерфейс командной строки .NET Core
- Visual Studio
dotnet add package Microsoft.Data.Sqlite
Install-Package Microsoft.Data.Sqlite
Использование
В этой библиотеке реализуются общие абстракции ADO.NET для подключений, команд, модулей чтения данных и других элементов.
using (var connection = new SqliteConnection("Data Source=hello.db")) < connection.Open(); var command = connection.CreateCommand(); command.CommandText = @" SELECT name FROM user WHERE "; command.Parameters.AddWithValue("$id", id); using (var reader = command.ExecuteReader()) < while (reader.Read()) < var name = reader.GetString(0); Console.WriteLine($"Hello, !"); > > >
См. также
- Строки подключения
- Справочник по интерфейсам API
- Синтаксис SQL
Обратная связь
Были ли сведения на этой странице полезными?
Обратная связь
Отправить и просмотреть отзыв по
Использование SQLite в проектах Visual Studio
Вы можете найти много ресурсов в Интернете, написав об использовании SQLite с универсальная платформа Windows (UWP), но где вы найдете SQLite в Visual Studio? В этом видео показано, где получить набор средств SQLite, как установить пакет SQLite в проекте Visual Studio, а также код внутри записи в базу данных SQLite.
Код для этого видео находится по ссылке ниже.
Вы можете найти много ресурсов в Интернете, написав об использовании SQLite с универсальная платформа Windows (UWP), но где вы найдете SQLite в Visual Studio? В этом видео показано, где получить набор средств SQLite, как установить пакет SQLite в проекте Visual Studio, а также код внутри записи в базу данных SQLite.
Код для этого видео находится по ссылке ниже.
SQLite в C# и .NET
SQLite является одной из наиболее популярных СУБД. К ее преимуществам можно отнести портативность и мобильность. Для работы с базой данной SQLite не требуется наличие сервера, как в случае с MS SQL Server. И .NET предоставляет возможности для работы с SQLite в рамках приложения на языке C#.
Прежде всего для работы SQLite в C# необходимо установить через Nuget пакет Microsoft.Data.Sqlite :

SqliteConnection
Для создания подключения к бд SQLite применяется класс SqliteConnection :
Он имеет два конструктора:
SqliteConnection() SqliteConnection(String)
Второй конструктор в качестве параметра принимает строку подключения.
Строка подключения для SQLite
Строка подключения представляет набор параметров в виде пар ключ=значение , которые отделяются друг от друга точкой с запятой. Рассмотрим, какие параметры может принимать строка подключения для SQLite.
Data Source
Указывает на путь к файлу базы данных. В качестве альтернативы можно использовать параметры DataSource (без пробела) и Filename . При этом можно определять абсолютные и относительные пути. Относительные пути рассматриваются относительно папки приложения.
Если этот параметр не указан, то SQLite создает временную базу данных на диске, которая удаляется при закрытии подключения.
Mode
Устанавливает режим подключения и может принимать следующие значения:
- ReadWriteCreate : открывает базу данных для чтения и записи. Если база данных не существует, то она автоматически создается. Это режим применяется по умолчанию.
- ReadWrite : открывает базу данных для чтения и записи.
- ReadOnly : открывает базу данных только для чтения.
- Memory : создает и открывает базу данных в памяти.
Cache
Устанавливает режим кэширования. Может принимать следующие значения:
- Default : применяет режим по умолчанию используемой библиотеки SQLite. Этот режим применяется по умолчанию.
- Private : для каждого подключения создается свой приватный кэш.
- Shared : подключения используют один общий кэш.
Password
Устанавливает ключ шифрования. Если данный параметр установлен, то сразу после открытия подключения базе данных посылается команду PRAGMA key с ключом шифрования.
Foreign Keys
Указывает, будет ли база данных поддерживать внешние ключи. Может принимать следующие значения:
- True : сразу после открытия подключения посылает команду PRAGMA foreign_keys = 1
- False : сразу после открытия подключения посылает команду PRAGMA foreign_keys = 0
Если параметр не применяется, то по умолчанию ничего — никаких команд PRAGMA foreign_keys не посылается.
Recursive triggers
Указывает, будут ли поддерживаться рекурсивные триггеры. Может принимать два значения:
- True : сразу после открытия подключения посылает команду PRAGMA recursive_triggers
- False : не посылает команду PRAGMA recursive_triggers . Значение по умолчанию.
Определение строки подключения
В большинстве случаев мы сможем обойтись одним параметром — путем к базе данных:
string connectionString = "Data Source=usersdata.db";
Но естественно при необходимости можно применять и другие параметры, например, кэширование и режим:
string connectionString = "Data Source=usersdata3.db;Cache=Shared;Mode=ReadOnly;";
Подключение к базе данных
Для открытия подключения у объекта SqliteConnection вызывается метод Open() :
using System; using Microsoft.Data.Sqlite; namespace HelloApp < class Program < static void Main(string[] args) < using (var connection = new SqliteConnection("Data Source=usersdata.db")) < connection.Open(); >Console.Read(); > > >
Если база данных из строки подключения не существует, то при выполнении метода Open() она создается автоматически (если действует режим по умолчанию — ReadWriteCreate )
Причем в данном случае для открытия подключения применяется синхронный метод, а не асинхронный. Дело в том, что SQLite не поддерживает асинхронные операции чтения/записи. Поэтому при использовании асинхронных методов в ADO.NЕT при обащении к базе данных SQLite они будут выполняться синхронно.
Начало работы с SQLite в Visual Studio на C#: создание бд, таблиц, вставка записей и отображение
Для серьезных, высоконагруженных проектов с многопользовательской (или сетевой) поддержкой для работы с базами данных обычно используются сервера баз данных. Однако, для программ, которые будут работать на одном компьютере с относительно небольшим объемом информации, нередко применяют имитацию этих самих серверов – особые библиотеки. Одна из наиболее распространенных – это SQLite. Именно с SQLite мы и познакомимся в данном материале.

Итак, сначала качаем и подключаем к проекту библиотеку System.Data.SQLite.dll. Используем директивы using
using System.Data.SQLite; using System.IO; using System.Data;
И начинаем работать. Необходимые нам переменные:
private String dbFileName; private SQLiteConnection m_dbConn; private SQLiteCommand m_sqlCmd;
После загрузки формы (событие Load) инициализируем их:
m_dbConn = new SQLiteConnection(); m_sqlCmd = new SQLiteCommand(); Кидаем на форму textbox и кнопку (элемент button) и на событие клика по ней вставляем следующий код: dbFileName = textBox1.Text+".sqlite"; if (!File.Exists(dbFileName)) SQLiteConnection.CreateFile(dbFileName);
Чтобы появилась вкладка с кодом, необходимо в визуальном редакторе сделать двойной щелчок по самой кнопке (это если то не знает).
В первой строке мы получаем информацию из текстового поля (название каталога), а во второй, если нет файла с таким названием – создаем в текущем каталоге новую одноимённую базу данных с расширением sqlite.
Теперь научимся создавать таблицы в нашем файле базе данных. Для этого кидаем на форму еще одну кнопку и пишем её обработчик:
try < m_dbConn = new SQLiteConnection("Data Source=" + dbFileName + ";Version=3;"); m_dbConn.Open(); m_sqlCmd.Connection = m_dbConn; m_sqlCmd.CommandText = "CREATE TABLE IF NOT EXISTS Catalog (id INTEGER PRIMARY KEY AUTOINCREMENT, product TEXT, characteristics TEXT)"; m_sqlCmd.ExecuteNonQuery(); MessageBox.Show("Таблица успешно создана!"); >catch (SQLiteException ex)
Запустив программу и попробовав выполнить данный код, мы столкнемся с ошибкой:

Не удается загрузить DLL «SQLite.Interop.dll»: Не найден указанный модуль. (Исключение из HRESULT: 0x8007007E)
Решается просто. Добавим файл SQLite.Interop.dll в папку программы. И снова пробуем запустить. Если получилось, то теперь у нас есть таблица в базе данных sqllite с тремя полями: ид товара, его название, а также характеристики. Структура максимально проста, создана специально для примера, для обучения.
Далее научимся добавлять записи в нашу таблицу. Это также несложно. Добавим на форму еще пару текстбоксов и кнопку. Вот и обработчик данной кнопки:
if (m_dbConn.State != ConnectionState.Open) < dbFileName = "catalog1.sqlite"; m_dbConn = new SQLiteConnection("Data Source=" + dbFileName + ";Version=3;"); m_dbConn.Open(); m_sqlCmd.Connection = m_dbConn; >try < m_sqlCmd.CommandText = "INSERT INTO Catalog ('product', 'characteristics') values ('" + textBox2.Text + "' , '" + textBox3.Text + "')"; m_sqlCmd.ExecuteNonQuery(); >catch (SQLiteException ex) < MessageBox.Show("Error: " + ex.Message); >m_dbConn.Close();
Дальше нам надо научиться выводить сделанные записи (товары) – а то мало ли, вдруг на самом деле там ничего и не записывается? Для этого кидаем на форму датагрид с именем dgvViewer, создаем в нем три столбца (columns) с соответствующими названиями (id, product, characteristics) и еще одну кнопку с кодом:
DataTable dTable = new DataTable(); String sqlQuery; if (m_dbConn.State != ConnectionState.Open) < dbFileName = "catalog1.sqlite"; m_dbConn = new SQLiteConnection("Data Source=" + dbFileName + ";Version=3;"); m_dbConn.Open(); >try < sqlQuery = "SELECT * FROM Catalog"; SQLiteDataAdapter adapter = new SQLiteDataAdapter(sqlQuery, m_dbConn); adapter.Fill(dTable); if (dTable.Rows.Count >0) < dgvViewer.Rows.Clear(); for (int i = 0; i < dTable.Rows.Count; i++) dgvViewer.Rows.Add(dTable.Rows[i].ItemArray); >else MessageBox.Show("Database is empty"); > catch (SQLiteException ex) < MessageBox.Show("Error: " + ex.Message); >m_dbConn.Close();

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

Автор этого материала — я — Пахолков Юрий. Я оказываю услуги по написанию программ на языках Java, C++, C# (а также консультирую по ним) и созданию сайтов. Работаю с сайтами на CMS OpenCart, WordPress, ModX и самописными. Кроме этого, работаю напрямую с JavaScript, PHP, CSS, HTML — то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
статьи IT, Visual Studio, sqlite, си шарп, базы данных
Оставить комментарий
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.