I'm crafting a storage module based on SQLite internally. Think about
it as 'ini files, but with a database'. Since this is my first touch
to SQL, and the number of statements I need is rediculously small, I'd
like some kind soul to 'proof-read' these and give comments.
Each SQL block is a single statement, and I precompile them with a
certain 'section' name baked into the code. Here goes..
Table creation:
Loc_PrepareSql( db, ,
"CREATE TABLE '%q' ( key TEXT UNIQUE ON CONFLICT
REPLACE,"
" val VARIANT );", section );
Q #1: What happens if the table already exists? Should I check for
that? How?
Value setting & getting:
Loc_PrepareSql( db, >sql_set,
"UPDATE '%q' SET val=?2 WHERE key='?1';", section );
Loc_PrepareSql( db, >sql_remove_key,
"DELETE FROM '%q' WHERE key='?1';", section );
Loc_PrepareSql( db, >sql_get,
"SELECT val FROM '%q' WHERE key='?1';", section );
Key enumeration (returns 1..N keys):
Loc_PrepareSql( db, >sql_all_keys,
"SELECT key FROM '%q';", section );
Key enumeration with a prefix (ie. "subtable.b."):
Loc_PrepareSql( db, >sql_like_keys,
"SELECT key FROM '%q' WHERE key= LIKE '?1.%';",
section );
Similar, returns 1..N key + value pairs:
Loc_PrepareSql( db, >sql_like_dump,
"SELECT key,val FROM '%q' WHERE key= LIKE '?1.%';",
section );
Loc_PrepareSql( db, >sql_transaction_begin, "BEGIN;", NULL );
Loc_PrepareSql( db, >sql_transaction_commit, "COMMIT;", NULL );
Thanks for help, feedback, and encouragement. :)
-ak