封装一个sqlite
时间: 2024-12-11 19:44:55 浏览: 12
封装一个SQLite数据库通常涉及创建一个类,该类提供对SQLite数据库的基本操作,如打开、关闭连接,执行查询和更新等。以下是一个简单的示例,展示如何用C++封装一个SQLite数据库:
首先,你需要包含SQLite的头文件并链接相应的库:
```cpp
#include <sqlite3.h>
```
然后,可以定义一个类来封装SQLite的操作:
```cpp
class SQLiteDB {
private:
sqlite3* db;
char* errMsg = nullptr;
int rc;
public:
SQLiteDB(const char* filename) {
rc = sqlite3_open(filename, &db);
if (rc) {
std::cerr << "Can't open database: " << sqlite3_errmsg(db) << std::endl;
sqlite3_close(db);
} else {
std::cout << "Opened database successfully" << std::endl;
}
}
~SQLiteDB() {
sqlite3_close(db);
}
void executeSQL(const char* sql) {
rc = sqlite3_exec(db, sql, callback, 0, &errMsg);
if (rc != SQLITE_OK) {
std::cerr << "SQL error: " << errMsg << std::endl;
sqlite3_free(errMsg);
} else {
std::cout << "Operation done successfully" << std::endl;
}
}
static int callback(void* NotUsed, int argc, char** argv, char** azColName) {
for (int i = 0; i < argc; i++) {
std::cout << azColName[i] << " = " << (argv[i] ? argv[i] : "NULL") << std::endl;
}
std::cout << std::endl;
return 0;
}
};
```
在这个类中,构造函数尝试打开一个数据库文件,析构函数负责关闭数据库连接。`executeSQL`方法用于执行SQL语句,它接受一个SQL字符串作为参数,并使用`sqlite3_exec`函数执行这个SQL语句。如果执行成功,它会打印出“Operation done successfully”,否则会打印出错误信息。
`callback`是一个静态成员函数,用作`sqlite3_exec`的回调函数,用于处理查询结果。
你可以这样使用这个类:
```cpp
int main() {
SQLiteDB db("test.db");
db.executeSQL("CREATE TABLE IF NOT EXISTS students(id INTEGER PRIMARY KEY, name TEXT NOT NULL);");
db.executeSQL("INSERT INTO students (name) VALUES ('Alice');");
db.executeSQL("SELECT * FROM students;");
return 0;
}
```
这段代码创建了一个名为`students`的表,插入了一条记录,并查询所有记录。
阅读全文