Windows下C语言操作SQLite

SQLite是一种轻量级的、自包含的、开源的数据库引擎,它支持大部分SQL92标准。在Windows系统下,我们可以使用C语言来操作SQLite数据库,进行数据的增删改查操作。
准备工作
在开始操作SQLite数据库之前,我们需要先准备好相关的环境:
- 下载SQLite:我们需要下载SQLite的最新版本,可以在SQLite的官网(https://www.sqlite.org/index.html )上下载。在Windows系统下,我们可以下载预编译的二进制文件。安装SQLite:下载好SQLite后,我们需要将SQLite的二进制文件解压到我们想要的目录中,例如C盘根目录下。编译器:在进行C语言开发时,我们需要一个编译器。在Windows系统下,我们可以使用MinGW或者Microsoft Visual Studio等编译器。
连接数据库
在C语言中操作SQLite数据库,首先需要打开并连接数据库。SQLite提供了一个C语言的接口来实现这一目的。下面是一个简单的示例代码,演示如何打开SQLite数据库:
#include <stdio.h>#include <sqlite3.h>int main() { sqlite3 *db; int rc; rc = sqlite3_open("test.db", &db); if (rc) { fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db)); return(0); } else { fprintf(stdout, "Database opened successfully\n"); } sqlite3_close(db); return 0;}运行上面的代码,如果一切正常,会输出Database opened successfully,表示数据库成功打开。
创建表格
一旦连接了数据库,我们就可以进行创建表格的操作。SQLite使用SQL语句来创建表格。下面是一个示例代码,演示如何在SQLite数据库中创建一个学生表格:
#include <stdio.h>#include <sqlite3.h>int main() { sqlite3 *db; char *err_msg = 0; int rc; rc = sqlite3_open("test.db", &db); if (rc) { fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db)); return 0; } char *sql = "CREATE TABLE Students(" "id INT PRIMARY KEY NOT NULL," "name TEXT NOT NULL," "age INT NOT NULL);"; rc = sqlite3_exec(db, sql, 0, 0, &err_msg); if (rc != SQLITE_OK) { fprintf(stderr, "SQL error: %s\n", err_msg); sqlite3_free(err_msg); sqlite3_close(db); return 1; } else { fprintf(stdout, "Table created successfully\n"); } sqlite3_close(db); return 0;}运行上面的代码,如果一切正常,会输出Table created successfully,表示表格成功创建。
插入数据
创建表格后,我们可以向表格中插入数据。下面是一个示例代码,演示如何向上面创建的学生表格中插入一条数据:
#include <stdio.h>#include <sqlite3.h>int main() { sqlite3 *db; char *err_msg = 0; int rc; rc = sqlite3_open("test.db", &db); if (rc) { fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db)); return 0; } char *sql = "INSERT INTO Students (id, name, age) " "VALUES (1, 'Alice', 20);"; rc = sqlite3_exec(db, sql, 0, 0, &err_msg); if (rc != SQLITE_OK) { fprintf(stderr, "SQL error: %s\n", err_msg); sqlite3_free(err_msg); sqlite3_close(db); return 1; } else { fprintf(stdout, "Records created successfully\n"); } sqlite3_close(db); return 0;}运行上面的代码,如果一切正常,会输出Records created successfully,表示数据成功插入。
查询数据
插入数据后,我们可以对数据进行查询操作。下面是一个示例代码,演示如何查询学生表格中的所有数据:
#include <stdio.h>#include <sqlite3.h>int callback(void *NotUsed, 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; rc = sqlite3_open("test.db", &db); if (rc) { fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db)); return 0; } char *sql = "SELECT * FROM Students;"; rc = sqlite3_exec(db, sql, callback, 0, &err_msg); if (rc != SQLITE_OK) { fprintf(stderr, "SQL error: %s\n", err_msg); sqlite3_free(err_msg); sqlite3_close(db); return 1; } sqlite3_close(db); return 0;}运行上面的代码,会输出查询到的数据。
更新数据和删除数据
除了插入和查询数据,我们还可以更新和删除数据。下面是一个示例代码,演示如何更新学生表格中的数据:
#include <stdio.h>#include <sqlite3.h>int main() { sqlite3 *db; char *err_msg = 0; int rc; rc = sqlite3_open("test.db", &db); if (rc) { fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db)); return 0; } char *sql = "UPDATE Students SET age = 21 WHERE id = 1;"; rc = sqlite3_exec(db, sql, 0, 0, &err_msg); if (rc != SQLITE_OK) { fprintf(stderr, "SQL error: %s\n", err_msg); sqlite3_free(err_msg); sqlite3_close(db); return 1; } else { fprintf(stdout, "Records updated successfully\n"); } sqlite3_close(db); return 0;}上面的代码会将id为1的学生的年龄修改为21。
总结
通过上面的示例代码,我们可以看到如何在Windows系统下使用C语言来操作SQLite数据库。我们可以通过连接数据库、创建表格、插入数据、查询数据、更新数据和删除数据等操作来管理SQLite数据库。SQLite的轻量级和易用性使得它成为一个很好的自包含数据库引擎,并且在很多应用程序中被广泛使用。
