diff --git a/README.md b/README.md index 88fc692..3cd3fc5 100644 --- a/README.md +++ b/README.md @@ -1,26 +1,100 @@ Phonegap SQLitePlugin ===================== -I have been developing Phonegap applications that required big databases. -WebKitSQLite HTML5 database has hardcoded quota limitations so I decided to -write this plugin to open my own sqlite files from javascript. +This is Joe Noon's fork of Phonegap-SQLitePlugin -Currently the plugin supports basic open, close, executeSQL and has no support -for transactions. +This fork lives at: https://github.com/joenoon/Phonegap-SQLitePlugin -I also started writing a js wrapper that exposes an HTML5-like interface but -it is unfinished yet (see sqlite-html5.js) +The original lives at: https://github.com/davibe/Phonegap-SQLitePlugin -Later I found out that I could actually use this plugin to open the same -database file WebKit uses to store HTML5 dbs and change their quota limits -(see sqlite.js). This way I was able to store up to 1Gb using standard -WebKitSQLite. +This fork has largely diverged from the original, and is not a drop-in +replacement. +DISCLAIMER: + + I'm brand new to objective-c, so there could be problems with my code! + Please tell me. joenoon@gmail.com -Usage -===== +Added: -Like any other PGPlugin drag it into your project, include sqlite.js file in -your application, modify PhoneGap.plist to bind PGSQLitePlugin to -it.dadeb.sqliteplugin namespace. Look at sqlite.js to get a sense of how it -works. + obj-c: + batch execution support + query parameter binding + perform after delay so js-objc call doesn't need to wait for response + callbacks moved out of instance and into options of each method call + path just takes filename, and path is put in Documents folder + added rowsAffected, insertId + success callback response is { insertId: x, rowsAffected: y, rows: z } + error callback response is { message: x } + + js (coffeescript): + new implementation + first cut transaction support + callbacks per-statement, even within transaction + somewhat similar api to the webkit/phonegap default + +Removed: + + quota limit webkit html5 db patching + exit from app + (I don't think either of these would make it through the approval process) + +Other notes: + + I played with the idea of batching responses into larger sets of + writeJavascript on a timer, however there was only a barely noticeable + performance gain. So I took it out, not worth it. However there is a + massive performance gain by batching on the client-side to minimize + PhoneGap.exec calls using the transaction support. + +Installing +========== + +Drag .h and .m files into your project's Plugins folder (in xcode) -- I always +just have "Create references" as the option selected. + +Compile the coffeescript file to javascript WITH the top-level function wrapper +option (default). + +Use the resulting javascript file in your HTML. + +Look for the following to your project's PhoneGap.plist: + +Plugins + + ... + + +Insert this in there: + +PGSQLitePlugin +PGSQLitePlugin + +General Usage +============= + +(You're using Coffeescript right? Of course you are.) + +db = new PGSQLitePlugin("test_native.sqlite3") +db.executeSql('DROP TABLE IF EXISTS test_table') +db.executeSql('CREATE TABLE IF NOT EXISTS test_table (id integer primary key, data text, data_num integer)') + +db.transaction (tx) -> + + tx.executeSql [ "INSERT INTO test_table (data, data_num) VALUES (?,?)", "test", 100], (res) -> + + # success callback + + console.log "insertId: #{res.insertId} -- probably 1" + console.log "rowsAffected: #{res.rowsAffected} -- should be 1" + + # check the count (not a part of the transaction) + db.executeSql "select count(id) as cnt from test_table;", (res) -> + console.log "rows.length: #{res.rows.length} -- should be 1" + console.log "rows[0].cnt: #{res.rows[0].cnt} -- should be 1" + + , (e) -> + + # error callback + + console.log "ERROR: #{e.message}"