// Copyright (c) 2000-2001 David Muse // See the file COPYING for more information #ifndef SQLITECONNECTION_H #define SQLITECONNECTION_H #define NUM_CONNECT_STRING_VARS 1 #include #include extern "C" { #ifdef SQLITE3 #include #else #include #endif } #include class sqliteconnection; class sqlitecursor : public sqlrcursor_svr { friend class sqliteconnection; private: sqlitecursor(sqlrconnection_svr *conn); ~sqlitecursor(); bool supportsNativeBinds(); bool executeQuery(const char *query, uint32_t length, bool execute); int runQuery(const char *query); void selectLastInsertRowId(); const char *errorMessage(bool *liveconnection); bool knowsRowCount(); uint64_t rowCount(); bool knowsAffectedRows(); uint64_t affectedRows(); uint32_t colCount(); const char * const * columnNames(); uint16_t columnTypeFormat(); void returnColumnInfo(); bool noRowsToReturn(); bool skipRow(); bool fetchRow(); void returnRow(); void cleanUpData(bool freeresult, bool freebinds); char **result; char **columnnames; int nrow; int ncolumn; int rowindex; bool lastinsertrowid; regularexpression selectlastinsertrowid; sqliteconnection *sqliteconn; }; class sqliteconnection : public sqlrconnection_svr { friend class sqlitecursor; public: sqliteconnection(); private: uint16_t getNumberOfConnectStringVars(); void handleConnectString(); bool logIn(bool printerrors); sqlrcursor_svr *initCursor(); void deleteCursor(sqlrcursor_svr *curs); void logOut(); bool ping(); const char *identify(); #ifndef SQLITE_TRANSACTIONAL bool isTransactional(); bool commit(); bool rollback(); #endif const char *db; #ifdef SQLITE3 sqlite3 *sqliteptr; #else sqlite *sqliteptr; #endif char *errmesg; }; #endif