下面是VC++操作SQLite简单实例的完整攻略:
一、前置条件
在开始操作SQLite之前,需要先安装以下两个软件:
-
SQLite3:下载地址为https://www.sqlite.org/download.html,根据操作系统选择对应的版本进行下载安装。
-
SQLite3 ODBC驱动:下载地址为https://www.ch-werner.de/sqliteodbc/,同样根据操作系统选择对应的版本进行下载安装。
二、创建SQLite数据库
- 打开SQLite3命令行工具,创建一个名为test.db的数据库:
sqlite3 test.db
- 在创建的数据库中创建一个名为stu的表,并添加一些记录:
CREATE TABLE stu (
id INT PRIMARY KEY,
name VARCHAR(20),
age INT,
gender VARCHAR(10)
);
INSERT INTO stu (id, name, age, gender) VALUES (1, 'Jack', 18, 'Male');
INSERT INTO stu (id, name, age, gender) VALUES (2, 'Lucy', 20, 'Female');
INSERT INTO stu (id, name, age, gender) VALUES (3, 'Tom', 22, 'Male');
三、在VC++中操作SQLite
-
新建一个VC++的Win32控制台应用程序,并在项目中添加sqlite3.h和sqlite3.lib两个文件。
-
在代码中引入头文件:
#include "sqlite3.h"
- 在代码中打开对应的数据库文件:
sqlite3* db;
char* errMsg = 0;
int result = sqlite3_open("test.db", &db);
if (result != SQLITE_OK) {
printf("Error code: %d, Error message: %s\n", result, sqlite3_errmsg(db));
sqlite3_close(db);
return 1;
}
- 执行SQL语句,对数据库进行读写操作:
// 查询数据库中的所有数据并输出
sqlite3_stmt* stmt;
result = sqlite3_prepare_v2(db, "SELECT * FROM stu", -1, &stmt, 0);
if (result != SQLITE_OK) {
printf("Error code: %d, Error message: %s\n", result, sqlite3_errmsg(db));
sqlite3_close(db);
return 1;
}
while (sqlite3_step(stmt) == SQLITE_ROW) {
printf("id:%d, name:%s, age:%d, gender:%s\n",
sqlite3_column_int(stmt, 0),
sqlite3_column_text(stmt, 1),
sqlite3_column_int(stmt, 2),
sqlite3_column_text(stmt, 3));
}
// 插入一条新的数据
sqlite3_exec(db, "INSERT INTO stu (id, name, age, gender) VALUES (4, 'Amy', 19, 'Female')", 0, 0, &errMsg);
if (errMsg) {
printf("Error message: %s\n", errMsg);
sqlite3_free(errMsg);
}
// 关闭数据库连接
sqlite3_finalize(stmt);
sqlite3_close(db);
以上就是VC++操作SQLite的一个简单实例。
四、示例说明
示例1:查询
假设数据库中表stu中有以下数据:
id | name | age | gender |
---|---|---|---|
1 | Jack | 18 | Male |
2 | Lucy | 20 | Female |
3 | Tom | 22 | Male |
现在我们要查询数据库中的所有数据并输出,可以按照以下方式进行操作:
sqlite3_stmt* stmt;
result = sqlite3_prepare_v2(db, "SELECT * FROM stu", -1, &stmt, 0);
if (result != SQLITE_OK) {
printf("Error code: %d, Error message: %s\n", result, sqlite3_errmsg(db));
sqlite3_close(db);
return 1;
}
while (sqlite3_step(stmt) == SQLITE_ROW) {
printf("id:%d, name:%s, age:%d, gender:%s\n",
sqlite3_column_int(stmt, 0),
sqlite3_column_text(stmt, 1),
sqlite3_column_int(stmt, 2),
sqlite3_column_text(stmt, 3));
}
sqlite3_finalize(stmt);
经过以上操作之后,控制台会输出以下内容:
id:1, name:Jack, age:18, gender:Male
id:2, name:Lucy, age:20, gender:Female
id:3, name:Tom, age:22, gender:Male
示例2:插入
我们可以按照以下方式插入一条新的数据到数据库中:
sqlite3_exec(db, "INSERT INTO stu (id, name, age, gender) VALUES (4, 'Amy', 19, 'Female')", 0, 0, &errMsg);
if (errMsg) {
printf("Error message: %s\n", errMsg);
sqlite3_free(errMsg);
}
执行以上代码之后,就会在表stu中插入一条新的数据。
注意:如果要插入的数据中包含单引号等特殊字符,需要使用双引号将整个SQL语句括起来,例如:
sqlite3_exec(db, "INSERT INTO stu (id, name, age, gender) VALUES (5, \"Bob's wife\", 25, 'Female')", 0, 0, &errMsg);
这样做可以让SQL语句中的单引号被正确地解析。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:VC++操作SQLite简单实例 - Python技术站