SQLite 是一个轻量级的数据库,广泛用于各种嵌入式系统和小型应用程序中。在 C++ 中,我们可以通过一些库轻松地连接到 SQLite 数据库,并执行各种数据库操作。本文将详细介绍如何在 C++ 中...
SQLite 是一个轻量级的数据库,广泛用于各种嵌入式系统和小型应用程序中。在 C++ 中,我们可以通过一些库轻松地连接到 SQLite 数据库,并执行各种数据库操作。本文将详细介绍如何在 C++ 中使用 SQLite,包括连接数据库、创建表、插入数据、查询数据以及断开连接等。
在 C++ 中,我们可以使用如 SQLite3 或 sqlite_orm 等库来操作 SQLite 数据库。以下是使用 SQLite3 库的配置步骤:
首先,你需要从 SQLite 的官方网站下载 SQLite3 库,或者使用包管理器安装(例如使用 vcpkg)。
在你的 C++ 项目中,包含 SQLite3 库的头文件:
#include 要连接到 SQLite 数据库,你需要创建一个 sqlite3 类型的实例,并使用 sqlite3_open 函数打开数据库文件。
sqlite3 *db;
int rc = sqlite3_open("example.db", &db);
if (rc) { fprintf(stderr, "无法打开数据库: %s\n", sqlite3_errmsg(db)); sqlite3_close(db); return 1;
}在上面的代码中,example.db 是数据库文件的名称。如果数据库文件不存在,SQLite 会自动创建它。
使用 SQLite3 库创建表的步骤如下:
首先,编写创建表的 SQL 语句:
const char *sql_create_table = "CREATE TABLE IF NOT EXISTS people (\n" " id integer PRIMARY KEY,\n" " name text NOT NULL,\n" " age integer\n" ");";然后,使用 sqlite3_exec 函数执行 SQL 语句:
rc = sqlite3_exec(db, sql_create_table, 0, 0, 0);
if (rc != SQLITE_OK) { fprintf(stderr, "SQL 错误: %s\n", sqlite3_errmsg(db)); sqlite3_close(db); return 1;
}要在表中插入数据,你需要编写一个插入数据的 SQL 语句,并执行它。
const char *sql_insert_person = "INSERT INTO people (name, age) VALUES ('John', 30);";
rc = sqlite3_exec(db, sql_insert_person, 0, 0, 0);
if (rc != SQLITE_OK) { fprintf(stderr, "SQL 错误: %s\n", sqlite3_errmsg(db)); sqlite3_close(db); return 1;
}查询数据与插入数据类似,只需编写一个查询数据的 SQL 语句并执行它。
const char *sql_query_person = "SELECT id, name, age FROM people WHERE age > 25;";
sqlite3_stmt *stmt;
rc = sqlite3_prepare_v2(db, sql_query_person, -1, &stmt, NULL);
if (rc == SQLITE_OK) { while (sqlite3_step(stmt) == SQLITE_ROW) { int id = sqlite3_column_int(stmt, 0); const char *name = (const char *)sqlite3_column_text(stmt, 1); int age = sqlite3_column_int(stmt, 2); printf("ID: %d, Name: %s, Age: %d\n", id, name, age); } sqlite3_finalize(stmt);
} else { fprintf(stderr, "SQL 错误: %s\n", sqlite3_errmsg(db)); sqlite3_close(db); return 1;
}完成所有数据库操作后,使用 sqlite3_close 函数关闭数据库连接:
sqlite3_close(db);通过以上步骤,你可以在 C++ 中轻松地连接到 SQLite 数据库,执行各种数据库操作,并最终断开连接。使用 SQLite3 库可以让你在不牺牲性能的情况下,轻松地管理你的数据。