用c++封装一个sqlite3的类
时间: 2023-08-14 15:03:14 浏览: 55
以下是一个简单的SQLite3封装类的示例:
```c++
#include <iostream>
#include <sqlite3.h>
class SQLiteDB {
private:
sqlite3* db;
public:
SQLiteDB(const char* dbName) {
int rc = sqlite3_open(dbName, &db);
if (rc != SQLITE_OK) {
std::cerr << "Cannot open database: " << sqlite3_errmsg(db) << std::endl;
sqlite3_close(db);
db = nullptr;
}
}
~SQLiteDB() {
if (db) {
sqlite3_close(db);
db = nullptr;
}
}
bool execute(const char* sql) {
if (!db) {
std::cerr << "Database not opened." << std::endl;
return false;
}
char* errmsg;
int rc = sqlite3_exec(db, sql, nullptr, nullptr, &errmsg);
if (rc != SQLITE_OK) {
std::cerr << "SQL error: " << errmsg << std::endl;
sqlite3_free(errmsg);
return false;
}
return true;
}
};
int main() {
SQLiteDB db("test.db");
if (db.execute("CREATE TABLE IF NOT EXISTS users (id INTEGER PRIMARY KEY, name TEXT, age INTEGER)")) {
std::cout << "Table created." << std::endl;
}
return 0;
}
```
这个类包含了一个构造函数和析构函数,分别用于打开和关闭数据库。还有一个 `execute` 函数用于执行 SQL 命令。如果 SQL 命令执行成功,函数将返回 true,否则将返回 false。
在这个示例中,我们创建了一个名为 `users` 的表格,其中包含 `id`、`name` 和 `age` 三个字段。如果表格不存在,则创建一个新的表格。