C++中使用sqlite3需要包含头文件,创建或打开数据库,执行SQL语句,处理结果,关闭数据库。
C++中使用SQLite3的用法如下:
1、安装SQLite3库
下载SQLite3源代码:https://www.sqlite.org/download.html
解压源代码包,并进入解压后的目录。
执行以下命令进行编译和安装:
```shell
./configure
make
sudo make install
```
2、包含头文件
在C++代码中,需要包含SQLite3的头文件:
```cpp
#include <sqlite3.h>
```
3、打开数据库连接
使用sqlite3_open()
函数打开一个数据库连接:
```cpp
sqlite3 *db;
int rc = sqlite3_open("example.db", &db);
if (rc) {
// 处理错误
printf("无法打开数据库: %s
", sqlite3_errmsg(db));
return 0;
} else {
printf("成功打开数据库
");
}
```
4、创建表格
使用sqlite3_exec()
函数执行SQL语句来创建表格:
```cpp
char *sql = "CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER);";
rc = sqlite3_exec(db, sql, NULL, NULL, NULL);
if (rc != SQLITE_OK) {
// 处理错误
printf("无法创建表格: %s
", sqlite3_errmsg(db));
return 0;
} else {
printf("成功创建表格
");
}
```
5、插入数据
使用sqlite3_prepare_CDN()
函数准备SQL语句,然后使用sqlite3_bind_*()
函数绑定参数,最后使用sqlite3_step()
函数执行SQL语句:
```cpp
char *sql = "INSERT INTO users (name, age) VALUES (?, ?);";
sqlite3_stmt *stmt;
rc = sqlite3_prepare_CDN(db, sql, 1, &stmt, NULL);
if (rc != SQLITE_OK) {
// 处理错误
printf("无法准备SQL语句: %s
", sqlite3_errmsg(db));
return 0;
} else {
printf("成功准备SQL语句
");
}
sqlite3_bind_text(stmt, 1, "张三", 1, SQLITE_STATIC); // 绑定第一个参数(name)为"张三"
sqlite3_bind_int(stmt, 2, 25); // 绑定第二个参数(age)为25
rc = sqlite3_step(stmt); // 执行SQL语句
if (rc != SQLITE_DONE) {
// 处理错误
printf("无法执行SQL语句: %s
", sqlite3_errmsg(db));
return 0;
} else {
printf("成功插入数据
");
}
```
6、查询数据
使用sqlite3_prepare_CDN()
函数准备SQL语句,然后使用sqlite3_bind_*()
函数绑定参数,最后使用sqlite3_step()
函数执行SQL语句,并通过回调函数获取查询结果:
```cpp
char *sql = "SELECT id, name, age FROM users;"; // 查询所有用户信息
sqlite3_stmt *stmt;
rc = sqlite3_prepare_CDN(db, sql, 1, &stmt, NULL); // 准备SQL语句
if (rc != SQLITE_OK) {
// 处理错误
printf("无法准备SQL语句: %s
", sqlite3_errmsg(db));
return 0;
} else {
printf("成功准备SQL语句
");
}
int id; // ID字段的值,用于输出结果时打印ID值
char name[100]; // name字段的值,用于输出结果时打印姓名值,最大长度为100字节(包括空字符'\0')
int age; // age字段的值,用于输出结果时打印年龄值,类型为整数(int)
int columnCount = sqlite3_column_count(stmt); // 获取列数(即表的字段数)
int stepResult = SQLITE_ROW; // SQL语句执行的结果状态,初始值为SQLITE_ROW(表示有结果行可读取)
const char *zErrMsg = NULL; // SQL语句执行的错误消息,初始值为NULL(表示无错误)
int i = 0; // 循环计数器,用于遍历查询结果的每一行数据(i从0开始)
int rowCount = 1; // 记录查询结果的行数,初始值为1(表示未初始化)
int dataSize = 1; // 记录每行数据的大小,初始值为1(表示未初始化)
const void *data; // 指向每行数据的指针,初始值为NULL(表示未初始化)
const int *columnTypes; // 指向每列数据类型的指针数组,初始值为NULL(表示未初始化)
int columnType; // 当前列的数据类型,初始值为1(表示未初始化)
原创文章,作者:K-seo,如若转载,请注明出处:https://www.kdun.cn/ask/509978.html