当前位置:首页 > C > 正文

C语言操作SQLite数据库完全指南(从零开始掌握SQLite3 C API使用)

在嵌入式开发、桌面应用或小型项目中,C语言 SQLite3 使用教程 是开发者必须掌握的基础技能之一。SQLite 是一款轻量级、无需独立服务器的嵌入式数据库,非常适合资源受限的环境。本文将手把手教你如何在 C 语言中使用 SQLite3 库进行数据库操作,即使你是编程新手也能轻松上手。

C语言操作SQLite数据库完全指南(从零开始掌握SQLite3 C API使用) C语言 SQLite3 使用教程  API 入门 C语言操作SQLite数据库 SQLite3嵌入式数据库C语言 第1张

一、准备工作:安装 SQLite3 开发库

在开始编码前,你需要确保系统中已安装 SQLite3 的开发库。

Ubuntu/Debian 系统:

sudo apt-get updatesudo apt-get install libsqlite3-dev

CentOS/RHEL 系统:

sudo yum install sqlite-devel

安装完成后,你就可以在 C 程序中通过 #include <sqlite3.h> 引入 SQLite3 的 API 了。

二、第一个 SQLite3 C 程序:创建数据库并插入数据

下面是一个完整的示例,展示如何用 C 语言创建一个 SQLite 数据库,建表,并插入一条记录。这个例子涵盖了 SQLite3 C API 入门 的核心流程。

#include <stdio.h>#include <stdlib.h>#include <sqlite3.h>// 回调函数:用于处理查询结果static int callback(void *data, int argc, char **argv, char **azColName) {    for (int i = 0; i < argc; i++) {        printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");    }    printf("\n");    return 0;}int main() {    sqlite3 *db;    char *err_msg = 0;    // 打开或创建数据库    int rc = sqlite3_open("test.db", &db);    if (rc != SQLITE_OK) {        fprintf(stderr, "无法打开数据库: %s\n", sqlite3_errmsg(db));        sqlite3_close(db);        return 1;    }    // 创建表    const char *sql_create_table =         "CREATE TABLE IF NOT EXISTS users ("        "id INTEGER PRIMARY KEY AUTOINCREMENT,"        "name TEXT NOT NULL,"        "age INTEGER);";    rc = sqlite3_exec(db, sql_create_table, 0, 0, &err_msg);    if (rc != SQLITE_OK) {        fprintf(stderr, "SQL 错误: %s\n", err_msg);        sqlite3_free(err_msg);        sqlite3_close(db);        return 1;    }    // 插入数据    const char *sql_insert = "INSERT INTO users (name, age) VALUES ('张三', 25);";    rc = sqlite3_exec(db, sql_insert, 0, 0, &err_msg);    if (rc != SQLITE_OK) {        fprintf(stderr, "插入失败: %s\n", err_msg);        sqlite3_free(err_msg);        sqlite3_close(db);        return 1;    }    printf("数据插入成功!\n");    // 查询数据    const char *sql_select = "SELECT * FROM users;";    rc = sqlite3_exec(db, sql_select, callback, 0, &err_msg);    if (rc != SQLITE_OK) {        fprintf(stderr, "查询失败: %s\n", err_msg);        sqlite3_free(err_msg);    }    // 关闭数据库    sqlite3_close(db);    return 0;}

三、编译与运行

将上述代码保存为 sqlite_demo.c,然后使用以下命令编译:

gcc sqlite_demo.c -lsqlite3 -o sqlite_demo

注意:必须链接 -lsqlite3 库,否则会报未定义引用错误。

运行程序:

./sqlite_demo

如果一切正常,你会看到输出:

数据插入成功!id = 1name = 张三age = 25

四、关键函数说明

  • sqlite3_open():打开或创建数据库文件。
  • sqlite3_exec():执行 SQL 语句,可用于建表、插入、更新、删除和查询。
  • sqlite3_close():关闭数据库连接,释放资源。
  • callback 函数:当执行 SELECT 查询时,每行结果都会调用此函数。

五、进阶建议:使用预编译语句防止 SQL 注入

在实际项目中,为了安全性和性能,推荐使用 sqlite3_prepare_v2()sqlite3_bind_*sqlite3_step() 等函数构建预编译语句。这不仅能防止 SQL 注入,还能提升重复执行的效率,是 C语言操作SQLite数据库 的最佳实践。

六、总结

通过本教程,你已经掌握了如何在 C 语言中使用 SQLite3 库进行基本的数据库操作。SQLite 作为一款优秀的 SQLite3嵌入式数据库C语言 解决方案,因其零配置、跨平台和高可靠性,被广泛应用于各类项目中。

建议你动手尝试修改示例代码,比如添加更多字段、实现用户输入功能,或封装成更模块化的函数。实践是掌握 C语言 SQLite3 使用教程 的最佳方式!