mirror of
https://github.com/moparisthebest/PhoneGap-SQLitePlugin-Android
synced 2024-11-22 16:52:16 -05:00
removing incompatible files, updating readme
This commit is contained in:
parent
79bb1160ec
commit
4d795d8425
108
README.md
108
README.md
@ -1,26 +1,100 @@
|
|||||||
Phonegap SQLitePlugin
|
Phonegap SQLitePlugin
|
||||||
=====================
|
=====================
|
||||||
|
|
||||||
I have been developing Phonegap applications that required big databases.
|
This is Joe Noon's fork of Phonegap-SQLitePlugin
|
||||||
WebKitSQLite HTML5 database has hardcoded quota limitations so I decided to
|
|
||||||
write this plugin to open my own sqlite files from javascript.
|
|
||||||
|
|
||||||
Currently the plugin supports basic open, close, executeSQL and has no support
|
This fork lives at: https://github.com/joenoon/Phonegap-SQLitePlugin
|
||||||
for transactions.
|
|
||||||
|
|
||||||
I also started writing a js wrapper that exposes an HTML5-like interface but
|
The original lives at: https://github.com/davibe/Phonegap-SQLitePlugin
|
||||||
it is unfinished yet (see sqlite-html5.js)
|
|
||||||
|
|
||||||
Later I found out that I could actually use this plugin to open the same
|
This fork has largely diverged from the original, and is not a drop-in
|
||||||
database file WebKit uses to store HTML5 dbs and change their quota limits
|
replacement.
|
||||||
(see sqlite.js). This way I was able to store up to 1Gb using standard
|
|
||||||
WebKitSQLite.
|
|
||||||
|
|
||||||
|
DISCLAIMER:
|
||||||
|
|
||||||
Usage
|
I'm brand new to objective-c, so there could be problems with my code!
|
||||||
=====
|
Please tell me. joenoon@gmail.com
|
||||||
|
|
||||||
Like any other PGPlugin drag it into your project, include sqlite.js file in
|
Added:
|
||||||
your application, modify PhoneGap.plist to bind PGSQLitePlugin to
|
|
||||||
it.dadeb.sqliteplugin namespace. Look at sqlite.js to get a sense of how it
|
obj-c:
|
||||||
works.
|
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:
|
||||||
|
|
||||||
|
<key>Plugins</key>
|
||||||
|
<dict>
|
||||||
|
...
|
||||||
|
</dict>
|
||||||
|
|
||||||
|
Insert this in there:
|
||||||
|
|
||||||
|
<key>PGSQLitePlugin</key>
|
||||||
|
<string>PGSQLitePlugin</string>
|
||||||
|
|
||||||
|
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}"
|
||||||
|
Loading…
Reference in New Issue
Block a user