Добавление, обновление, удаление данных в SQLite

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

Рассмотрим основные операции с базой данных SQLite на примере таблицы:

CREATE TABLE people (
    id INTEGER PRIMARY KEY AUTOINCREMENT,  
    name TEXT, 
    age INTEGER
)

Добавление данных

Для добавления данных применяется SQL-инструкция INSERT:

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

int main() {
    sqlite3 *db;    // указатель на базу данных
    char *err_msg = 0;
    int rc  = sqlite3_open("test.db", &db);
    if (rc != SQLITE_OK)
    {
        sqlite3_close(db);
        return 1;
    }
    // добавляем строку в таблицу people
    char *sql = "INSERT INTO people (name, age) VALUES ('Tom', 38)";
    rc = sqlite3_exec(db, sql, 0, 0, &err_msg);
    if (rc != SQLITE_OK )
    {
        printf("SQL error: %s\n", err_msg);
        sqlite3_free(err_msg);
        sqlite3_close(db);
        return 1;
    }
    sqlite3_close(db);
    printf("data inserted\n");
    return 0;
} 

Здесь добавляется одна строка, где name = "Tom", а age = 38. И если мы откроем базу данных в программе для простра БД в графическом виде, то мы увидим добавленную строку:

Добавление данных в SQLite в языке C

Множественная вставка

Подобным образом можно добавить в таблицу сразу набор строк:

// добавляем 4 строки в таблицу people
char *sql = "INSERT INTO people (name, age) VALUES ('Bob', 42);"
            "INSERT INTO people (name, age) VALUES ('Sam', 28);"
            "INSERT INTO people (name, age) VALUES ('Alice', 33);"
            "INSERT INTO people (name, age) VALUES ('Kate', 25);";
rc = sqlite3_exec(db, sql, 0, 0, &err_msg); 

Обновление и удаление будут аналогичны добавлению, только меняется SQL-выражение.

Обновление

Для обновления в SQL выполняется команда UPDATE. Например, заменим у всех пользователей имя с Tom на Tomas:

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

int main() {
    sqlite3 *db;
    char *err_msg = 0;
    int rc  = sqlite3_open("test.db", &db);
    if (rc != SQLITE_OK)
    {
        sqlite3_close(db);
        return 1;
    }
    // обновляем строки, где name = Tom
    char *sql = "UPDATE people SET name ='Tomas' WHERE name='Tom'";
    rc = sqlite3_exec(db, sql, 0, 0, &err_msg);
    if (rc != SQLITE_OK )
    {
        printf("SQL error: %s\n", err_msg);
        sqlite3_free(err_msg);
        sqlite3_close(db);
        return 1;
    }
    sqlite3_close(db);
    printf("data updated\n");
    return 0;
} 

Удаление данных

Для удаления в SQL выполняется команда DЕLETE. Например, удалим всех пользователей с именем Bob:

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

int main() {
    sqlite3 *db;
    char *err_msg = 0;
    int rc  = sqlite3_open("test.db", &db);
    if (rc != SQLITE_OK)
    {
        sqlite3_close(db);
        return 1;
    }
    // удаляем строки, где name = Bob
    char *sql = "DELETE FROM people WHERE name='Bob'";
    rc = sqlite3_exec(db, sql, 0, 0, &err_msg);
    if (rc != SQLITE_OK )
    {
        printf("SQL error: %s\n", err_msg);
        sqlite3_free(err_msg);
        sqlite3_close(db);
        return 1;
    }
    sqlite3_close(db);
    printf("data deleted\n");
    return 0;
} 
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850