SQLite

Подключение к SQLite

Последнее обновление: 30.04.2023

SQLite представляет одну из самых популярных систем баз данных. И мы можем использовать SQLite в наших приложениях на языке C. Более того сама SQLite написана на языке C.

Для работы с SQlite нам необходимы соответствующие файлы. Самый простой вариант - взять файлы с исходным кодом с официального сайта SQLite со страницы https://www.sqlite.org/download.html:

sqlite3.c и sqlite3.h

Нужный нам файл называется "sqlite-amalgamation-xxxxxxxxx.zip". Он представляет архив с исходными файлами SQLite. Если мы его загрузим и распакуем, то увидим в нем несколько файлов:

Использование файлов sqlite3.c и sqlite3.h в приложении на языке C

Здесь нас будут интересовать два файла: sqlite3.c и sqlite3.h. Положим из в одну папку с главным файлом программы (допустим, он называется app.c):

Использование файлов sqlite в приложении на языке C

Для создания подключения к базе данных применяется функция sqlite3_open

int sqlite3_open(const char *filename, sqlite3 **ppDb );

Первый параметр функции представляет имя файла базы данных. Второй параметр - объект sqlite3**, который и будет представлять подключение к базе данных. Через объект sqlite3 в дальнейшем можно взаимодействовать с базой данных.

Результатом функции является числовой код. Если он равен значению константы SQLITE_OK (число 0), то подключение к бд успешно установлено. Если же он равен 1 или представляет другое число, то произошла ошибка.

После завершения работы с базой данных следует закрыть подключение. Для этого применяется функция sqlite3_close()

int sqlite3_close(sqlite3*);

В качестве параметра функция принимает указатель на закрываемое подключение. И также возвращает числовой код результата (0 - при успешном закрытии).

Например, откроем и закроем подключение к базе данных:

#include <stdio.h>
#include "sqlite3.h"

int main() {
    sqlite3 *db;    // указатель на базу данных
    // открываем подключение к базе данных
    int result  = sqlite3_open("test.db", &db);
    printf("result = %d\n", result);
    // закрываем подключение
    sqlite3_close(db);
}

Поскольку мы используем функционал SQLite, то при компиляции нам также надо передать компилятору файл sqlite3.c:

gcc app.c sqlite3.c -o app

После выполнения скомпилированного файла app в папке программы должен появиться файл базы данных "test.db". А на консоли в случае успешного выполнения будет выведено

result = 0

Компиляция в gcc

Предложенный выше способ подключения SQLite имеет преимущества - мы имеет доступ к исходникам и можем компилировать приложения вне зависимости от компилятора и окружения - GCC, Clang, Visual Studio. Однако, для этого нам надо как минимум загрузать файлы с исходным кодом, и, кроме того, компиляция программы можем занять некоторое время. Если мы используем GCC, то мы можем упростить задачу. Чуть изменим исходный код:

#include <stdio.h>
#include <sqlite3.h>

int main() {
    sqlite3 *db;    // указатель на базу данных
    // открываем подключение к базе данных
    int result  = sqlite3_open("test.db", &db);
    printf("result = %d\n", result);
    // закрываем подключение
    sqlite3_close(db);
}

Здесь файл "sqlite3.h" подключается как глобальный заголовочный файл.

А при компиляции добавим библиотеку sqlite3 с помощью опции компиляции -l:

gcc app.c -o app -l sqlite3

Вывод ошибки

Вполне возможно, что при попытке установить подключение с базой данных возникнет ошибка. SQLite предоставляет функцию sqlite3_errmsg(), которая позволяет из указателя на базу данных получить описание ошибки в виде строки:

const char *sqlite3_errmsg(sqlite3*);

Например, выведем сообщение об ошибке при неудачной попытке установить подключение:

#include <stdio.h>
#include <sqlite3.h>

int main() {
    sqlite3 *db;    // указатель на базу данных
    // открываем подключение к базе данных
    int result  = sqlite3_open("test.db", &db);
    // если подключение успешно установлено
    if(result == SQLITE_OK) 
    {
        printf("Connection established\n");
    }
    else
    {
        // выводим сообщение об ошибке
        fprintf(stderr, "Error: %s\n", sqlite3_errmsg(db));
    }
    // закрываем подключение
    sqlite3_close(db);
}
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850