以下是使用C++操作SQLite数据库进行单表增删改查的示例代码:
#include <iostream>
#include <sqlite3.h>
// 增加
int insertData(sqlite3* db, const std::string& name, int age) {
char* errMsg = nullptr;
std::string sql = "INSERT INTO people (name, age) VALUES (?, ?);";
sqlite3_exec(db, "BEGIN;", nullptr, nullptr, &errMsg); // 开始事务
if (sqlite3_exec(db, sql.c_str(), [](void* data, int columnCount, char** columnValues, char** columnNames) {
// 这里是回调函数,用于处理查询结果
for (int i = 0; i < columnCount; ++i) {
std::cout << columnNames[i] << ": " << columnValues[i] << std::endl;
}
return 0;
}, &errMsg, nullptr) != SQLITE_OK) {
std::cerr << "SQL error: " << errMsg << std::endl;
sqlite3_free(errMsg);
}
sqlite3_exec(db, "COMMIT;", nullptr, nullptr, &errMsg); // 提交事务
return 0;
}
// 查询
int selectData(sqlite3* db, const std::string& name) {
char* errMsg = nullptr;
std::string sql = "SELECT * FROM people WHERE name = ?;";
sqlite3_exec(db, "BEGIN;", nullptr, nullptr, &errMsg); // 开始事务
if (sqlite3_exec(db, sql.c_str(), [](void* data, int columnCount, char** columnValues, char** columnNames) {
// 这里是回调函数,用于处理查询结果
for (int i = 0; i < columnCount; ++i) {
std::cout << columnNames[i] << ": " << columnValues[i] << std::endl;
}
return 0;
}, &errMsg, nullptr) != SQLITE_OK) {
std::cerr << "SQL error: " << errMsg << std::endl;
sqlite3_free(errMsg);
}
sqlite3_exec(db, "COMMIT;", nullptr, nullptr, &errMsg); // 提交事务
return 0;
}
// 更新
int updateData(sqlite3* db, const std::string& name, int age) {
char* errMsg = nullptr;
std::string sql = "UPDATE people SET age = ? WHERE name = ?;";
sqlite3_exec(db, "BEGIN;", nullptr, nullptr, &errMsg); // 开始事务
if (sqlite3_exec(db, sql.c_str(), nullptr, nullptr, &errMsg) != SQLITE_OK) {
std::cerr << "SQL error: " << errMsg << std::endl;
sqlite3_free(errMsg);
}
sqlite3_exec(db, "COMMIT;", nullptr, nullptr, &errMsg); // 提交事务
return 0;
}
// 删除
int dele