Начало работы с 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)
{
MessageBox.Show("Ошибка: " + ex.Message);
}
Запустив программу и попробовав выполнить данный код, мы столкнемся с ошибкой:
Не удается загрузить 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 - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.
Программы на заказ
Отзывы
Контакты