C语言怎么操作SQL数据库里的数据,增删改查那些事儿简单演示
- 问答
- 2026-01-25 14:12:32
- 154
要直接用C语言去碰数据库,你得先找一个“翻译官”,也就是数据库的客户端库,这里我们用SQLite来举例,因为它最简单,不需要单独安装数据库服务器,一个文件就是一个数据库,非常适合上手,你要做的第一件事,是去SQLite官网(来源:SQLite官方网站)下载一个叫“sqlite3.c”和“sqlite3.h”的文件,把它们放到你的项目里。
就是写代码连接了,想象一下,你要打开一个笔记本(数据库文件)来读写字,如果这个笔记本不存在,SQLite会直接给你创建一个新的。
#include <stdio.h>
#include <sqlite3.h> // 这就是我们引入的“翻译官”手册
int main() {
sqlite3 *db; // 这是一个指针,代表我们将要操作的数据库对象
char *err_msg = 0; // 用来存出错信息
// 打开或创建数据库文件,名字叫“test.db”
int rc = sqlite3_open("test.db", &db);
if (rc != SQLITE_OK) {
fprintf(stderr, "打不开数据库:%s\n", sqlite3_errmsg(db));
return 1;
} else {
fprintf(stdout, "数据库打开成功!\n");
}
上面这段代码(思路来源于SQLite官方文档关于sqlite3_open的说明)就完成了连接,现在数据库“db”就在你手里了,可以开始增删改查。

第一件事,建个表。 好比在笔记本里先画好表格的格子,这里我们创建一个简单的“学生”表。
// 创建表的SQL语句
char *sql = "CREATE TABLE IF NOT EXISTS 学生(学号 INT PRIMARY KEY, 姓名 TEXT, 成绩 INT);";
// 执行这条SQL语句
rc = sqlite3_exec(db, sql, 0, 0, &err_msg);
if (rc != SQLITE_OK) {
fprintf(stderr, "SQL错误:%s\n", err_msg);
sqlite3_free(err_msg);
} else {
fprintf(stdout, "表创建成功!\n");
}
sqlite3_exec函数(来源:SQLite官方文档对sqlite3_exec的描述)是个多面手,可以用来执行不返回数据的SQL命令,比如创建、插入、删除、更新。

第二件事,插入数据(增)。 往表格里写一行记录。
// 插入一条学生记录
sql = "INSERT INTO 学生(学号, 姓名, 成绩) VALUES(1001, '小明', 85);";
rc = sqlite3_exec(db, sql, 0, 0, &err_msg);
// ... 同样的错误检查
printf("插入数据成功!\n");
第三件事,查询数据(查)。 这是最复杂的,因为你要把数据从数据库里拿出来看,这里不能用sqlite3_exec了,需要用另外两个函数配合:sqlite3_prepare_v2和sqlite3_step。

// 查询所有学生
sql = "SELECT * FROM 学生;";
sqlite3_stmt *stmt; // 这是一个“语句对象”,代表准备好要执行的SQL
rc = sqlite3_prepare_v2(db, sql, -1, &stmt, 0);
if (rc == SQLITE_OK) {
// 一步一步地遍历查询结果
while (sqlite3_step(stmt) == SQLITE_ROW) {
// 按列号取出数据,第一列是0
int id = sqlite3_column_int(stmt, 0);
const char *name = (const char *)sqlite3_column_text(stmt, 1);
int score = sqlite3_column_int(stmt, 2);
printf("学号:%d, 姓名:%s, 成绩:%d\n", id, name, score);
}
}
sqlite3_finalize(stmt); // 用完记得清理这个语句对象
这个过程就像你准备好一个问题(prepare),然后一步步(step)问,每步得到一行答案,再从这行答案里按位置拿具体的数据(column)。
第四件事,更新数据(改)。 把小明成绩改一下。
sql = "UPDATE 学生 SET 成绩 = 90 WHERE 姓名 = '小明';";
rc = sqlite3_exec(db, sql, 0, 0, &err_msg);
// ... 错误检查
printf("更新数据成功!\n");
第五件事,删除数据(删)。 删除成绩小于60的记录。
sql = "DELETE FROM 学生 WHERE 成绩 < 60;";
rc = sqlite3_exec(db, sql, 0, 0, &err_msg);
// ... 错误检查
printf("删除数据成功!\n");
最重要的一步, 一定要关闭数据库!就像用完笔记本要合上。
sqlite3_close(db);
return 0;
}
整个过程的核心就是:*连接数据库 -> 用sqlite3_exec执行不返回数据的SQL(增、删、改、建表) -> 用sqlite3_prepare_v2/sqlite3_step/`sqlite3column`这一套组合拳来查询数据 -> 最后关闭连接。** 记住这个流程,你就掌握了C语言操作SQL数据库最基本的方法,其他像MySQL或PostgreSQL,思路完全一样,只是初始连接的方式和用的“翻译官”库(如MySQL Connector/C)不同而已(来源:各类数据库客户端库的通用设计模式)。
本文由凤伟才于2026-01-25发表在笙亿网络策划,如有疑问,请联系我们。
本文链接:https://ofke.haoid.cn/wenda/85769.html