SQLite 在Windows上使用C语言操作SQLite数据库
在本文中,我们将介绍如何在Windows操作系统上使用C语言操作SQLite数据库。SQLite是一种轻量级的数据库引擎,提供了简单易用的API和SQL语言支持。我们将学习如何创建数据库、创建表格、执行SQL语句以及读写数据库中的数据。
阅读更多:SQLite 教程
安装SQLite
在开始之前,我们需要下载并安装SQLite的开发包。我们可以从SQLite的官方网站上找到最新的稳定版本并下载。安装包中包含了SQLite的静态库文件(.lib)以及头文件(.h)。我们需要将这些文件放置在我们的编译环境中。在Windows环境下,我们可以将这些文件放在Visual Studio的工程目录中。
打开和关闭数据库
在使用SQLite之前,我们需要打开一个数据库,并且在使用完毕后进行关闭。我们可以使用sqlite3_open()函数打开一个数据库连接,并使用sqlite3_close()函数关闭连接。下面是一个简单的示例代码:
#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, "Opened database successfully\n");
}
// 使用数据库
sqlite3_close(db);
}
在上述代码中,我们打开了一个名为test.db的数据库。如果打开过程中出现错误,我们将打印错误信息到stderr中。如果打开成功,我们将打印一条成功的信息。在使用完毕后,我们使用sqlite3_close()函数关闭数据库连接。
创建表格
在SQLite中,我们可以使用SQL语句来创建表格。下面是一个示例代码,通过执行SQL语句来创建一个名为students的表格:
#include <sqlite3.h>
int main() {
sqlite3 *db;
char *errMsg = 0;
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, "Opened database successfully\n");
}
// 创建表格
char *sql = "CREATE TABLE students(" \
"ID INT PRIMARY KEY NOT NULL," \
"NAME TEXT NOT NULL," \
"AGE INT NOT NULL," \
"ADDRESS CHAR(50)," \
"GRADE INT );";
rc = sqlite3_exec(db, sql, 0, 0, &errMsg);
if( rc != SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", errMsg);
sqlite3_free(errMsg);
} else {
fprintf(stdout, "Table created successfully\n");
}
sqlite3_close(db);
}
在上述代码中,我们使用sqlite3_exec()函数执行SQL语句来创建一个名为students的表格。表格的结构包含ID、NAME、AGE、ADDRESS和GRADE五个字段。
执行SQL语句
在SQLite中,我们可以使用sqlite3_exec()函数执行SQL语句。下面是一个示例代码,通过执行SQL语句向表格中插入一条数据并查询:
#include <sqlite3.h>
int main() {
sqlite3 *db;
char *errMsg = 0;
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, "Opened database successfully\n");
}
// 插入数据
char *sql = "INSERT INTO students (ID, NAME, AGE, ADDRESS, GRADE) " \
"VALUES (1, 'Alice', 20, '123 Main St', 90 ); " \
"SELECT * FROM students;";
rc = sqlite3_exec(db, sql, callback, 0, &errMsg);
if( rc != SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", errMsg);
sqlite3_free(errMsg);
} else {
fprintf(stdout, "Operation done successfully\n");
}
sqlite3_close(db);
}
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;
}
上述代码中,我们使用sqlite3_exec()函数执行了两个SQL语句。第一个语句是插入一条数据到students表格中,第二个语句是查询students表格中的所有数据。我们还定义了一个回调函数callback,用于处理查询结果。
读写数据
在SQLite中,我们可以使用sqlite3_exec()函数执行查询操作,然后通过回调函数处理查询结果。下面的示例代码展示了如何读取数据:
#include <sqlite3.h>
int main() {
sqlite3 *db;
char *errMsg = 0;
int rc;
char *sql;
const char* data = "Callback function called";
rc = sqlite3_open("test.db", &db);
if( rc ) {
fprintf(stderr, "Can't open database: %s\n", sqlite3_errmsg(db));
return(0);
} else {
fprintf(stdout, "Opened database successfully\n");
}
// 查询数据
sql = "SELECT * FROM students";
rc = sqlite3_exec(db, sql, callback, (void*)data, &errMsg);
if( rc != SQLITE_OK ){
fprintf(stderr, "SQL error: %s\n", errMsg);
sqlite3_free(errMsg);
} else {
fprintf(stdout, "Operation done successfully\n");
}
sqlite3_close(db);
}
static int callback(void *data, int argc, char **argv, char **azColName){
int i;
fprintf(stderr, "%s: ", (const char*)data);
for(i=0; i<argc; i++){
printf("%s = %s\n", azColName[i], argv[i] ? argv[i] : "NULL");
}
printf("\n");
return 0;
}
上述代码中,我们定义了一个回调函数callback,用于处理查询结果。在示例中,回调函数将会被调用一次,并打印查询结果到stdout中。
总结
本文介绍了如何在Windows操作系统上使用C语言操作SQLite数据库。我们学习了如何打开和关闭数据库连接,如何创建表格,如何执行SQL语句以及如何读写数据库中的数据。SQLite提供了简单易用的API和SQL语言支持,适用于轻量级的数据库应用。通过本文的学习,读者可以快速上手使用SQLite进行数据库操作。