Changeset 69
- Timestamp:
- 09/05/07 17:42:54 (1 year ago)
- Files:
-
- trunk/dbi/sqlite/SqliteDatabase.d (modified) (10 diffs)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/dbi/sqlite/SqliteDatabase.d
r59 r69 13 13 } else { 14 14 private import tango.stdc.stringz : toDString = fromUtf8z, toCString = toUtf8z; 15 } 16 private import dbi.Database, dbi.DBIException, dbi.Result, dbi.Row, dbi.Statement; 15 private import tango.util.log.Log; 16 } 17 private import dbi.Database, dbi.DBIException, dbi.Result, dbi.Row, dbi.Statement, dbi.Registry; 17 18 private import dbi.sqlite.imp, dbi.sqlite.SqliteError, dbi.sqlite.SqliteResult; 18 19 … … 24 25 */ 25 26 class SqliteDatabase : Database { 27 28 private Logger logger; 26 29 public: 27 30 … … 30 33 */ 31 34 this () { 35 logger = Log.getLogger("dbi.sqlite.Database"); 32 36 } 33 37 … … 39 43 */ 40 44 this (char[] dbFile) { 45 logger = Log.getLogger("dbi.sqlite.Database"); 41 46 connect(dbFile); 42 47 } … … 60 65 */ 61 66 override void connect (char[] params, char[] username = null, char[] password = null) { 67 logger.trace("connecting: " ~ params); 62 68 if ((errorCode = sqlite3_open(toCString(params), &database)) != SQLITE_OK) { 63 69 throw new DBIException("Could not open or create " ~ params, errorCode, specificToGeneral(errorCode)); … … 69 75 */ 70 76 override void close () { 77 logger.trace("closing database now"); 71 78 if (database !is null) { 72 79 if ((errorCode = sqlite3_close(database)) != SQLITE_OK) { … … 87 94 */ 88 95 override void execute (char[] sql) { 96 logger.trace("executing: " ~ sql); 89 97 char** errorMessage; 90 98 if ((errorCode = sqlite3_exec(database, sql.dup.ptr, null, null, errorMessage)) != SQLITE_OK) { … … 106 114 */ 107 115 override SqliteResult query (char[] sql) { 116 logger.trace("querying: " ~ sql); 108 117 char** errorMessage; 109 118 sqlite3_stmt* stmt; … … 142 151 } 143 152 153 /** 154 * Get the integer id of the last row to be inserted. 155 * 156 * Returns: 157 * The id of the last row inserted into the database. 158 */ 159 override long getLastInsertID() { 160 return sqlite3_last_insert_rowid(database); 161 } 162 144 163 /* 145 164 * Note: The following are not in the DBI API. 146 165 */ 147 166 148 /**149 * Get the rowid of the last insert.150 *151 * Returns:152 * The row of the last insert or 0 if no inserts have been done.153 */154 long getLastInsertRowId () {155 return sqlite3_last_insert_rowid(database);156 }157 167 158 168 /** … … 262 272 return false; 263 273 } 274 } 275 276 private class SqliteRegister : Registerable { 277 278 private Logger logger; 279 280 this() { 281 logger = Log.getLogger("dbi.sqlite"); 282 } 283 284 public char[] getPrefix() { 285 return "sqlite"; 286 } 287 288 public Database getInstance(char[] url) { 289 logger.trace("creating Sqlite database: " ~ url); 290 return new SqliteDatabase(url); 291 } 292 } 293 294 static this() { 295 auto logger = Log.getLogger("dbi.sqlite"); 296 logger.trace("Attempting to register SqliteDatabase in Registry"); 297 registerDatabase(new SqliteRegister()); 264 298 } 265 299
