#ifndef __Plugin_Sqlite3__ #define __Plugin_Sqlite3__ #include NAMESPACE_UPP bool Sqlite3PerformScript(const String& text, #ifdef NOAPPSQL StatementExecutor& se, #else StatementExecutor& se = SQLStatementExecutor(), #endif Gate2 progress_canceled = false ); class Sqlite3Session : public SqlSession { public: virtual bool IsOpen() const { return NULL != db; } virtual RunScript GetRunScript() const { return &Sqlite3PerformScript; } virtual Vector EnumUsers() { NEVER(); return Vector(); } // No users in sqlite! virtual Vector EnumDatabases(); virtual Vector EnumTables(String database); virtual Vector EnumViews(String database); virtual Vector EnumColumns(String database, String table); // Some opaque structures used by the sqlite3 library typedef struct sqlite3 sqlite3; typedef struct sqlite3_stmt sqlite3_stmt; protected: virtual SqlConnection *CreateConnection(); private: sqlite3 *db; String current_filename; String current_dbname; public: bool Open(const char *filename); void Close(); operator sqlite3 *() { return db; } virtual void Begin(); virtual void Commit(); virtual void Rollback(); Sqlite3Session() { db = NULL; Dialect(SQLITE3); } ~Sqlite3Session() { Close(); } }; END_UPP_NAMESPACE #endif