Skip to content

hansschmucker/Node-SQLite-NoDep

master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
 
 
 
 
 
 

Node-SQLite-NoDep

Node-SQLite-NoDep

Node-SQLite-NoDep is a very simplistic abstraction layer for the sqlite3 shell application. While full integration using something like Node-SQLite3 is usually preferable, there are cases when a simple, portable solution is a safer choice. Node-SQLite-NoDep requires nothing but the plain node.exe and sqlite3.exe files. No NPM, nothing. Just these two EXE files.

Limitations

  • Error reporting is a bit broken. SQL errors are therefore reported directly to console.error.
  • Handling of character \u0000 is broken in sqlite3.exe, so Node-SQLite-NoDep replaces it with \u0020 automatically. (Node-SQLite-NoDep now uses sqlite3.exe INSERT-formatted output)
  • Characters \u0003 and \u0004 are used as delimiters (Node-SQLite-NoDep now uses sqlite3.exe INSERT-formatted output)
  • This applies to binary data as well. (Node-SQLite-NoDep now uses sqlite3.exe INSERT-formatted output)

Usage

Just drop node.exe and sqlite into a directory named BIN (or change the path in SQLite.js).

Create your JS file (for example main.js). Put SQLite.js somewhere and reference it via

const SQLite = require('./SQLite.js');

When opening a database you can specifiy a filename, options for creating tables and a callback to be run after all tables have been created.

var testdb=new SQLite('.\\db\\test.sqlite',[
    {name:"FOO",columns:"X int,LABEL varchar[64]"},
    {name:"BAR",columns:"X int,LABEL varchar[64]"}
],function(){
    //Your code
});

Executing SQL is done via instance.sql, which returns an array of objects where each property corresponds to the column name.

testdb.sql("SELECT COUNT(*) AS COUNT FROM FOO",function(data){
    console.log(JSON.stringify(data,null,"\t"));
}.bind(this));

If you need bind parameters, those are available too, although they use a different scheme than what SQLite usually uses, specifically ?IDENTIFIER, $STRING, #NUMBER and &BINARY: For example:

this.db.sql("DELETE FROM ?userTableName WHERE ?userColumn=&username",
    {
        userTableName:this.userTableName,
        userColumn:this.userColumn,
        username:username
    },
onDone);

Open a shell and start Node

CD \directory
bin\node.exe main.js