Asynchronous, non-blocking SQLite3 bindings for Node.js.
Extended version
The sqlite3
module works with Node.js v4.x, v6.x, v8.x, and v10.x.
The sqlite3
module also works with node-webkit if node-webkit contains a supported version of Node.js engine. (See below.)
SQLite's SQLCipher extension is also supported. (See below.)
Note: the module must be installed before use.
var sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database(':memory:');
db.serialize(function() {
db.run("CREATE TABLE lorem (info TEXT)");
var stmt = db.prepare("INSERT INTO lorem VALUES (?)");
for (var i = 0; i < 10; i++) {
stmt.run("Ipsum " + i);
}
stmt.finalize();
db.each("SELECT rowid AS id, info FROM lorem", function(err, row) {
console.log(row.id + ": " + row.info);
});
});
db.close();
First implementation by Whitney Young
var sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database(':memory:', function() {
db.registerFunction('A_PLUS_B', function(a, b) {
return a+b;
});
db.all('SELECT A_PLUS_B(1, 2) AS val', function(err, rows) {
console.log(row.id + ": " + row.info); //Prints [{val: 3}]
});
db.close();
});
var sqlite3 = require('sqlite3').verbose();
var db = new sqlite3.Database(':memory:', function() {
let tempStr = '';
db.registerAggregateFunction('CUSTOM_AGGREGATE', function(value) {
if(!value){
return tempStr;
}
tempStr+= value;
});
db.all('SELECT CUSTOM_AGGREGATE(id) AS val', function(err, rows) {
console.log(row.id + ": " + row.info); //Prints [{val: '123456'}] if table has 6 rows with id field
});
db.close();
});
- Straightforward query and parameter binding interface
- Full Buffer/Blob support
- Extensive debugging support
- Query serialization API
- Extension support
- Big test suite
- Written in modern C++ and tested for memory leaks
- Bundles Sqlite3 3.15.0 as a fallback if the installing system doesn't include SQLite
- Custom functions. Implemented
sqlite_create_function
See the API documentation in the wiki.
You can use npm
to download and install:
- GitHub's
master
branch:npm install https://github.com/lailune/node-sqlite3/tarball/master
It is possible to use the installed package in node-webkit instead of the vanilla Node.js.
mocha is required to run unit tests.
In sqlite3's directory (where its package.json
resides) run the following:
npm install mocha
npm test
- Konstantin Käfer
- Dane Springmeyer
- Will White
- Orlando Vazquez
- Artem Kustikov
- Eric Fredricksen
- John Wright
- Ryan Dahl
- Tom MacWright
- Carter Thaxton
- Audrius Kažukauskas
- Johannes Schauer
- Mithgol
- Whitney Young
- Andrey Nedobylsky
Originally developed by MapBox