SQLite附带一个C风格的界面,您需要显式关闭每个资源(没有析构函数)。
int rc = sqlite3_open16(databaseFileName, &sqlite->db);
...
sqlite3_close(_sqlite->db);
是否有可用的C风格界面的C ++接口或包装器,这会为GTK +添加析构函数,如gtkmm?类似的东西:
class SQLiteDb
{
public:
SQLiteDb() {
int rc = sqlite3_open16(databaseFileName, &db);
if(rc != SQLITE_OK){
std::string errorText = sqlite3_errmsg(db);
throw std::runtime_error(errorText);
}
}
~SQLiteDb() {
sqlite3_close(db);
}
private:
sqlite3 *db;
};