c++封装sqlite3
时间: 2023-06-29 22:07:56 浏览: 135
SQLite是一种轻型的嵌入式关系型数据库,它不需要独立的服务器进程,以文件的形式存储数据,因此非常适合嵌入到其他应用程序中使用。在C++中,我们可以通过SQLite提供的C接口来操作SQLite数据库,也可以通过封装SQLite的方式来简化操作。
下面是一个简单的C++封装SQLite3的示例:
```cpp
#include <sqlite3.h>
#include <string>
class SQLiteDB {
public:
SQLiteDB(const std::string& dbPath) : dbPath_(dbPath), db_(nullptr) {}
~SQLiteDB() {
close();
}
bool open() {
if (db_) {
return true;
}
int result = sqlite3_open(dbPath_.c_str(), &db_);
if (result != SQLITE_OK) {
return false;
}
return true;
}
void close() {
if (db_) {
sqlite3_close(db_);
db_ = nullptr;
}
}
bool exec(const std::string& sql) {
char* error = nullptr;
int result = sqlite3_exec(db_, sql.c_str(), nullptr, nullptr, &error);
if (result != SQLITE_OK) {
sqlite3_free(error);
return false;
}
return true;
}
private:
std::string dbPath_;
sqlite3* db_;
};
```
以上代码定义了一个SQLiteDB类,它包含了打开和关闭数据库的方法,以及执行SQL语句的方法。在构造函数中,我们需要传入数据库文件的路径,通过sqlite3_open函数打开数据库,如果打开失败则返回false。在析构函数中,我们需要关闭数据库。在exec方法中,我们通过sqlite3_exec函数执行SQL语句,如果执行失败则返回false。
使用示例:
```cpp
int main() {
SQLiteDB db("test.db");
if (!db.open()) {
return -1;
}
if (!db.exec("CREATE TABLE IF NOT EXISTS user (id INTEGER PRIMARY KEY, name TEXT)")) {
return -1;
}
if (!db.exec("INSERT INTO user (name) VALUES ('Tom')")) {
return -1;
}
db.close();
return 0;
}
```
以上代码创建了一个名为test.db的SQLite数据库文件,并在其中创建了一个名为user的表,然后插入了一行数据。
阅读全文