c数据库增删改查源程序
- 行业动态
- 2025-02-21
- 1
在C语言中,使用数据库进行增删改查(CRUD)操作通常需要结合数据库管理系统(如MySQL、SQLite等)和相应的C语言库(如MySQL Connector/C、SQLite3等),以下是一个简单的示例,展示如何使用C语言连接SQLite数据库并进行增删改查操作。
环境准备
1、安装SQLite:确保你的系统上已安装SQLite,可以从[SQLite官网](https://www.sqlite.org/download.html)下载并安装。
2、安装SQLite3 C接口:大多数Linux发行版可以通过包管理器安装,例如在Ubuntu上运行sudo apt-get install libsqlite3-dev
。
示例代码
以下是一个使用SQLite3的C程序,演示如何创建表、插入数据、查询数据、更新数据和删除数据。
#include <stdio.h> #include <stdlib.h> #include <sqlite3.h> // 回调函数,用于处理查询结果 static int callback(void *NotUsed, int argc, charargv, charazColName) { for (int i = 0; i < argc; i++) { printf("%s = %s ", azColName[i], argv[i] ? argv[i] : "NULL"); } printf(" "); return 0; } int main() { sqlite3 *db; char *err_msg = 0; int rc; // 打开数据库(如果不存在则创建) rc = sqlite3_open("test.db", &db); if (rc != SQLITE_OK) { fprintf(stderr, "Cannot open database: %s ", sqlite3_errmsg(db)); sqlite3_close(db); return 1; } // 创建表 const char *sql_create_table = "CREATE TABLE IF NOT EXISTS Students(" "ID INTEGER PRIMARY KEY AUTOINCREMENT," "Name TEXT NOT NULL," "Age INTEGER NOT NULL);"; rc = sqlite3_exec(db, sql_create_table, 0, 0, &err_msg); if (rc != SQLITE_OK) { fprintf(stderr, "SQL error: %s ", err_msg); sqlite3_free(err_msg); sqlite3_close(db); return 1; } // 插入数据 const char *sql_insert = "INSERT INTO Students (Name, Age) VALUES ('Alice', 21);" "INSERT INTO Students (Name, Age) VALUES ('Bob', 22);"; rc = sqlite3_exec(db, sql_insert, 0, 0, &err_msg); if (rc != SQLITE_OK) { fprintf(stderr, "SQL error: %s ", err_msg); sqlite3_free(err_msg); sqlite3_close(db); return 1; } // 查询数据 const char *sql_select = "SELECT * FROM Students;"; printf("Querying data: "); rc = sqlite3_exec(db, sql_select, callback, 0, &err_msg); if (rc != SQLITE_OK) { fprintf(stderr, "SQL error: %s ", err_msg); sqlite3_free(err_msg); sqlite3_close(db); return 1; } // 更新数据 const char *sql_update = "UPDATE Students SET Age = 23 WHERE Name = 'Alice';"; rc = sqlite3_exec(db, sql_update, 0, 0, &err_msg); if (rc != SQLITE_OK) { fprintf(stderr, "SQL error: %s ", err_msg); sqlite3_free(err_msg); sqlite3_close(db); return 1; } // 删除数据 const char *sql_delete = "DELETE FROM Students WHERE Name = 'Bob';"; rc = sqlite3_exec(db, sql_delete, 0, 0, &err_msg); if (rc != SQLITE_OK) { fprintf(stderr, "SQL error: %s ", err_msg); sqlite3_free(err_msg); sqlite3_close(db); return 1; } // 再次查询以验证更新和删除 printf("Querying data after update and delete: "); rc = sqlite3_exec(db, sql_select, callback, 0, &err_msg); if (rc != SQLITE_OK) { fprintf(stderr, "SQL error: %s ", err_msg); sqlite3_free(err_msg); sqlite3_close(db); return 1; } // 关闭数据库 sqlite3_close(db); return 0; }
编译与运行
将上述代码保存为crud.c
,然后使用以下命令编译并运行:
gcc -o crud crud.c -lsqlite3 ./crud
FAQs
Q1: 如果数据库文件已经存在,sqlite3_open
会做什么?
A1: 如果指定的数据库文件已经存在,sqlite3_open
会打开该数据库文件,如果文件不存在,它会尝试创建一个新文件,如果由于权限问题无法创建或打开文件,会返回一个错误。
Q2: 如何处理SQL执行过程中的错误?
A2: 在每次调用sqlite3_exec
后,应该检查返回码是否为SQLITE_OK
,如果不是,可以使用sqlite3_errmsg
获取错误信息,并根据需要进行错误处理,例如打印错误信息或采取其他措施,记得在使用完错误信息后调用sqlite3_free
释放内存。
小编有话说
通过以上示例,你可以看到在C语言中使用SQLite进行基本的数据库操作并不复杂,关键在于理解SQL语句以及如何通过C语言接口与数据库交互,对于更复杂的应用,可能需要进一步学习SQL优化、事务处理以及更高级的数据库特性,希望这个示例能帮助你入门C语言中的数据库编程!
本站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本站,有问题联系侵删!
本文链接:http://www.xixizhuji.com/fuzhu/150307.html