# SQLite3 Adaptor Note: this is far from being complete! The adaptor is currently a fork of the PostgreSQL adaptor. TODO ==== - check EOAttribute+SQLite: -loadValueClassAndTypeUsingSQLiteType:... - SQLiteChannel.m: -primaryFetchAttributes => check field name processing - rewrite for exception less operation - implement more methods in SQLiteChannel+Model (hard with SQLite though) Basics ====== Open a Shell: sqlite3 OGo > insert schema > select * from date_x; Configure the Adaptor (below does not work yet for SQLite3!) Defaults write ogo-webui-1.0a LSAdaptor SQLite3 Defaults write ogo-webui-1.0a LSConnectionDictionary \ '{ databaseName = OGo; }' Defaults write ogo-webui-1.0a PKeyGeneratorDictionary \ "{ newKeyExpression=\"select nextval(\\'key_generator\\');\" }" SQLiteDebugEnabled Setup gdltest Database ====================== sqlite3 Test.sqldb sqlite> CREATE TABLE my_table ( pkey INT PRIMARY KEY ); Sequential execution ==================== http://www.hwaci.com/sw/sqlite/c_interface.html ---snip--- typedef struct sqlite_vm sqlite_vm; int sqlite_compile( sqlite *db, /* The open database */ const char *zSql, /* SQL statement to be compiled */ const char **pzTail, /* OUT: uncompiled tail of zSql */ sqlite_vm **ppVm, /* OUT: the virtual machine to execute zSql */ char **pzErrmsg /* OUT: Error message. */ ); int sqlite_step( sqlite_vm *pVm, /* The virtual machine to execute */ int *pN, /* OUT: Number of columns in result */ const char ***pazValue, /* OUT: Column data */ const char ***pazColName /* OUT: Column names and datatypes */ ); int sqlite_finalize( sqlite_vm *pVm, /* The virtual machine to be finalized */ char **pzErrMsg /* OUT: Error message */ ); ---snap--- Error-Codes =========== ---snip--- #define SQLITE_OK 0 /* Successful result */ #define SQLITE_ERROR 1 /* SQL error or missing database */ #define SQLITE_INTERNAL 2 /* An internal logic error in SQLite */ #define SQLITE_PERM 3 /* Access permission denied */ #define SQLITE_ABORT 4 /* Callback routine requested an abort */ #define SQLITE_BUSY 5 /* The database file is locked */ #define SQLITE_LOCKED 6 /* A table in the database is locked */ #define SQLITE_NOMEM 7 /* A malloc() failed */ #define SQLITE_READONLY 8 /* Attempt to write a readonly database */ #define SQLITE_INTERRUPT 9 /* Operation terminated by sqlite_interrupt() */ #define SQLITE_IOERR 10 /* Some kind of disk I/O error occurred */ #define SQLITE_CORRUPT 11 /* The database disk image is malformed */ #define SQLITE_NOTFOUND 12 /* (Internal Only) Table or record not found */ #define SQLITE_FULL 13 /* Insertion failed because database is full */ #define SQLITE_CANTOPEN 14 /* Unable to open the database file */ #define SQLITE_PROTOCOL 15 /* Database lock protocol error */ #define SQLITE_EMPTY 16 /* (Internal Only) Database table is empty */ #define SQLITE_SCHEMA 17 /* The database schema changed */ #define SQLITE_TOOBIG 18 /* Too much data for one row of a table */ #define SQLITE_CONSTRAINT 19 /* Abort due to contraint violation */ #define SQLITE_MISMATCH 20 /* Data type mismatch */ #define SQLITE_MISUSE 21 /* Library used incorrectly */ #define SQLITE_NOLFS 22 /* Uses OS features not supported on host */ #define SQLITE_AUTH 23 /* Authorization denied */ #define SQLITE_ROW 100 /* sqlite_step() has another row ready */ #define SQLITE_DONE 101 /* sqlite_step() has finished executing */ ---snap---