080. 使用C语言实现简单的数据库操作
在C语言中,实现简单的数据库操作通常涉及使用SQL语句与数据库进行交互。虽然C语言本身不直接支持数据库操作,但可以通过数据库的API或第三方库来实现。常见的数据库包括SQLite、MySQL和PostgreSQL等。
SQLite是一个轻量级的嵌入式数据库,非常适合小型项目和学习用途。
1. 安装SQLite
在Linux上,可以通过包管理器安装SQLite。例如,在Ubuntu上,可以使用以下命令安装SQLite开发库:
sudo apt-get install sqlite3 libsqlite3-dev
在Windows上,可以从SQLite官网下载预编译的二进制文件,并将其添加到系统的PATH中。
2. 示例代码:使用SQLite创建数据库、表和插入数据
#include <stdio.h>
#include <sqlite3.h>
// 回调函数:用于处理查询结果
static int callback(void* data, int argc, char** argv, char** azColName) {
int i;
for (i = 0; i < argc; i++) {
printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
}
printf("\n");
return 0;
}
int main(int argc, char* argv[]) {
sqlite3* db;
char* zErrMsg = 0;
int rc;
// 打开数据库
rc = sqlite3_open("test.db", &db);
if (rc) {
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
sqlite3_close(db);
return 1;
} else {
fprintf(stderr, "Opened database successfully\n");
}
// 创建表
const char* createTableSQL = "CREATE TABLE IF NOT EXISTS COMPANY("
"ID INT PRIMARY KEY NOT NULL,"
"NAME TEXT NOT NULL,"
"AGE INT NOT NULL,"
"ADDRESS CHAR(50),"
"SALARY REAL );";
rc = sqlite3_exec(db, createTableSQL, 0, 0, &zErrMsg);
if (rc != SQLITE_OK) {
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
} else {
fprintf(stdout, "Table created successfully\n");
}
// 插入数据
const char* insertSQL = "INSERT INTO COMPANY (ID, NAME, AGE, ADDRESS, SALARY) "
"VALUES (1, 'Paul', 32, 'California', 20000.00 );";
rc = sqlite3_exec(db, insertSQL, 0, 0, &zErrMsg);
if (rc != SQLITE_OK) {
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
} else {
fprintf(stdout, "Records created successfully\n");
}
// 查询数据
const char* selectSQL = "SELECT * FROM COMPANY;";
rc = sqlite3_exec(db, selectSQL, callback, 0, &zErrMsg);
if (rc != SQLITE_OK) {
fprintf(stderr, "SQL error: %s\n", zErrMsg);
sqlite3_free(zErrMsg);
} else {
fprintf(stdout, "Operation done successfully\n");
}
// 关闭数据库
sqlite3_close(db);
return 0;
}
3. 编译和运行
在Linux上,可以使用以下命令编译和运行程序:
gcc -o sqlite_example sqlite_example.c -lsqlite3
./sqlite_example
在Windows上,需要确保SQLite的动态链接库(DLL)在系统的PATH中,或者将DLL文件放在与可执行文件相同的目录下。
4. 示例运行
运行程序后,会创建一个名为test.db
的数据库文件,并在其中创建一个COMPANY
表,插入一条记录,并查询显示所有记录。
输出:
Opened database successfully
Table created successfully
Records created successfully
ID = 1
NAME = Paul
AGE = 32
ADDRESS = California
SALARY = 20000.0
Operation done successfully
5. 注意事项
- 数据库文件:SQLite数据库是一个单一的文件,通常以
.db
为扩展名。如果文件不存在,sqlite3_open
会自动创建它。 - SQL语句:使用
sqlite3_exec
函数执行SQL语句。该函数可以执行创建表、插入数据、查询数据等操作。 - 回调函数:查询结果通过回调函数处理。回调函数的参数包括查询结果的列名和列值。
- 错误处理:使用
sqlite3_errmsg
获取错误信息,并使用sqlite3_free
释放错误信息的内存。 - 关闭数据库:使用
sqlite3_close
关闭数据库连接,确保释放所有资源。
6. 总结
通过使用SQLite,可以在C语言中实现简单的数据库操作。SQLite是一个轻量级的嵌入式数据库,适用于小型项目和学习用途。通过掌握SQLite的基本操作,可以实现数据的存储、查询和管理。在实际开发中,可以根据具体需求选择合适的数据库系统。
视频讲解
BiliBili: 视睿网络-哔哩哔哩视频 (bilibili.com)