На нашем сайте мы используем cookie для сбора информации технического характера и обрабатываем IP-адрес вашего местоположения. Продолжая использовать этот сайт, вы даете согласие на использование файлов cookies. Здесь вы можете узнать, как мы пользуемся файлами cookies.
Я согласен
логотип upread.ru

Начало работы с 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 - то есть могу доработать ваш сайт или помочь с веб-программированием. Пишите сюда.



тегистатьи IT, Visual Studio, sqlite, си шарп, базы данных





Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.




Есть ли флеш в браузере?
Букмекеры, вилки и парсинг


© upread.ru 2013-2020
При перепечатке активная ссылка на сайт обязательна.
Задать вопрос
письмо
Здравствуйте! Вы можете задать мне любой вопрос. Если не получается отправить сообщение через эту форму, то пишите на почу up777up@yandex.ru
Отправляя сообщение я подтверждаю, что ознакомлен и согласен с политикой конфиденциальности данного сайта.