Skip to content

Latest commit

 

History

History
101 lines (78 loc) · 2.73 KB

README.md

File metadata and controls

101 lines (78 loc) · 2.73 KB

= SQLite bindings for Node.js =

Interface to an [http://sqlite.org/ SQLite] (version 3) database within [http://nodejs.org/ Node].

The semantics mostly follow those of the [http://dev.w3.org/html5/webdatabase/#sql HTML5 Web SQL API], with some extensions. Also, only the synchronous API is implemented; the asynchronous API is a big TODO item.

== Quick Example ==

{{{ var sqlite = require("./sqlite"); var db = sqlite.openDatabaseSync("test.db"); db.query("INSERT INTO test (column) VALUES ($value)", {$value: 10}); db.query("SELECT column FROM test WHERE rowid < ?", [5], function (records) { process.assert(records[0].column == 10); process.assert(records.rows.item(0).column == 10); // HTML5 semantics }); // Multiple statement queries are supported: db.query("UPDATE test SET column=20; SELECT column FROM test;", function (update, select) { process.assert(update.rowsAffected == 1); process.assert(select[0].column == 20); }); // HTML5 semantics db.transaction(function(tx) { tx.executeSql("SELECT * FROM test WHERE column = ?", [10], function (tx,res) { process.assert(res.rows.item(0).row.column == 10); }); }); db.close(); }}}

== Functions ==

=== var db = sqlite.openDatabaseSync(filename) ===

Returns an object representing the sqlite3 database with given filename.

=== db.query(sql [,bindings] [,callback]) ===

Executes the query sql, with variables bound from bindings. The variables can take the form * ? or ?N, where N is a number, in which case bindings should be an array of values, or * $id, where $id is an identifier, in which case bindings should be an object with keys matching the variable names (e.g. { $name: "Rumplestiltskin" }.

If provided the callback is called with a number of arguments equal to the number of statements in the query. Each argument is a result set which is an array of objects mapping column names to values.

Each result set r also has these accessors: * r.rowsAffected is the number of rows affected by an UPDATE query.
* r.insertId is the ROWID of the new row in an INSERT query
* r.rows.length (also just r.length) is the number of rows in a SELECT result
* r.all is an array of result sets, one for each statement in the query

The return value is the first (often only) result set.

== Install ==

Install node. http://nodejs.org/

{{{ $ git clone git://github.com/grumdrig/node-sqlite.git $ cd node_sqlite $ node-waf configure $ node-waf build }}}

== Test ==

{{{ $ node test.js $ node doc/examples.js }}}

== V8 ==

The bindings are somewhat specific to Node but are probably fairly easily adaptable to work, more generally, with [http://code.google.com/p/v8/ V8].