node.js and h2 database

Viewed 124

I want to create h2 database in node.js and to create a table to selec/insert data from/into. (See the Code) Table IDS_TABLE is not being created, so i get this error: Table "IDS_TABLE" not found (this database is empty); ..." when i try to excute a queries.

Any Idea what i am doing wrong?

var JDBC = require('jdbc');
var jinst = require('jdbc/lib/jinst');
var config = {
    url: 'jdbc:h2:mem:db1;DB_CLOSE_DELAY=-1;TRACE_LEVEL_SYSTEM_OUT=3;ACCESS_MODE_DATA=rw;DATABASE_TO_UPPER=false',
    drivername: 'org.h2.Driver', 
    minpoolsize: 10,
    maxpoolsize: 100,
};
if (!jinst.isJvmCreated()) {
    jinst.addOption("-Xrs");
    jinst.setupClasspath(['./lib/h2-2.1.214.jar']);
}
var h2 = new JDBC(config)
h2.initialize((err) => {
    if (err) {
        console.log('initialize.error:', err)
    }
});
console.log('h2:', h2)
function queryDB(sql, callback) {
    h2.reserve((err, connobj) => {
        if (connobj && connobj.conn) {
            connobj.conn.createStatement((err, statement) => {
                if (callback) {
                    statement.executeQuery(sql, (err, result) => h2.release(connobj, (err) => callback(result)));
                } else {
                    statement.executeUpdate(sql, (err) => h2.release(connobj, (err) => { if (err) console.log(err) }));
                }
            });
        } else {
            console.log('error excuting query')
        }
    });
};
function init(callback) {
    queryDB("CREATE TABLE IDS_TABLE (ID_COL int)");
}
function addSome(callback) {
    queryDB("insert into IDS_TABLE(ID_COL) values(1),  values(2), values(3), values(4), values(5)");
}
function getAll(callback) {
    queryDB("SELECT ID_COL FROM IDS_TABLE", (result) => {
        console.log('result: ', result);
    });
}
function test() {
    init();
    addSome();
    getAll();
}
test()
1 Answers

You are invoking init, addSome and getAll in a sequence. Not waiting for 'init' to complete. Use the callbacks instead.

Related