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的轻量级和易用性使得它成为一个很好的自包含数据库引擎,并且在很多应用程序中被广泛使用。