Рассмотрим основные операции с базой данных 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. И если мы откроем базу данных в программе для простра БД в графическом виде, то мы увидим добавленную строку:
Подобным образом можно добавить в таблицу сразу набор строк:
// добавляем 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; }