Windows 10 Pro + nodejdbc で hsqldb2 にアクセスしてみる

Windows 10 Pro + nodejdbc で hsqldb2 にアクセスしてみる

参考にしたのはこちら
jdbc - npm
Windows 10 Pro + OpenJDK10 で HSQLDB を設定してみる
 
以下で npm install jdbc を実行する
Windows 10 Pro + node で Build環境 を設定してみる
 
vscode で フォルダを作成
> npm init
> npm install jdbc
driversフォルダを作成して hsqldb.jar をコピーする
jdbc - npm のサンプルコードより(コメントは適当に削除 see orign)


var JDBC = require('jdbc');
var jinst = require('jdbc/lib/jinst');

if (!jinst.isJvmCreated()) {
jinst.addOption("-Xrs");
jinst.setupClasspath(['./drivers/hsqldb.jar']);
}
var config = {
// Required 埋め込みモードで実行する
url: 'jdbc:hsqldb:file:D:/DB/hsqldb2/hsqldb/lib/db/test', // 環境に合わせる

// Optional
drivername: 'org.hsqldb.jdbcDriver',
minpoolsize: 10,
maxpoolsize: 100,

user: 'SA',
password: '',
properties: {}
};

var hsqldb = new JDBC(config);

hsqldb.initialize(function(err) {
if (err) {
console.log(err);
}
});
// This assumes initialization as above.
// For series execution.
var asyncjs = require('async');

hsqldb.reserve(function(err, connObj) {
// The connection returned from the pool is an object with two fields
// {uuid: , conn: }
if (connObj) {
console.log("Using connection: " + connObj.uuid);
// Grab the Connection for use.
var conn = connObj.conn;

// Adjust some connection options. See connection.js for a full set of
// supported methods.
asyncjs.series([
function(callback) {
conn.setAutoCommit(false, function(err) {
if (err) {
callback(err);
} else {
callback(null);
}
});
},
function(callback) {
conn.setSchema("test", function(err) {
if (err) {
callback(err);
} else {
callback(null);
}
});
}
], function(err, results) {
// Check for errors if need be.
// results is an array.
});

// Query the database.
asyncjs.series([
function(callback) {
// CREATE SQL.
conn.createStatement(function(err, statement) {
if (err) {
callback(err);
} else {
statement.executeUpdate("CREATE TABLE blah "
+ "(id int, name varchar(10), date DATE, "
+ " time TIME, timestamp TIMESTAMP);",
function(err, count) {
if (err) {
callback(err);
} else {
callback(null, count);
}
});
}
});
},
function(callback) {
conn.createStatement(function(err, statement) {
if (err) {
callback(err);
} else {
statement.executeUpdate("INSERT INTO blah "
+ "VALUES (1, 'Jason', CURRENT_DATE, "
+ "CURRENT_TIME, CURRENT_TIMESTAMP);",
function(err, count) {
if (err) {
callback(err);
} else {
callback(null, count);
}
});
}
});
},
function(callback) {
// Update statement.
conn.createStatement(function(err, statement) {
if (err) {
callback(err);
} else {
statement.executeUpdate("UPDATE blah "
+ "SET id = 2 "
+ "WHERE name = 'Jason';",
function(err, count) {
if (err) {
callback(err);
} else {
callback(null, count);
}
});
}
});
},
function(callback) {
// Select statement example.
conn.createStatement(function(err, statement) {
if (err) {
callback(err);
} else {
// Adjust some statement options before use. See statement.js for
// a full listing of supported options.
statement.setFetchSize(100, function(err) {
if (err) {
callback(err);
} else {
statement.executeQuery("SELECT * FROM blah;",
function(err, resultset) {
if (err) {
callback(err)
} else {
resultset.toObjArray(function(err, results) {
if (results.length > 0) {
console.log("ID: " + results[0].ID);
}
callback(null, resultset);
});
}
});
}
});
}
});
},
function(callback) {
conn.createStatement(function(err, statement) {
if (err) {
callback(err);
} else {
statement.executeUpdate("DELETE FROM blah "
+ "WHERE id = 2;", function(err, count) {
if (err) {
callback(err);
} else {
callback(null, count);
}
});
}
});
},
function(callback) {
conn.createStatement(function(err, statement) {
if (err) {
callback(err);
} else {
statement.executeUpdate("DROP TABLE blah;", function(err, count) {
if (err) {
callback(err);
} else {
callback(null, count);
}
});
}
});
}
], function(err, results) {
// Results can also be processed here.
// Release the connection back to the pool.
hsqldb.release(connObj, function(err) {
if (err) {
console.log(err.message);
}
});
});
}
});

> node nd0002.js
3 27, 2018 h:mm:ss ߌ org.hsqldb.persist.Logger logInfoEvent
: checkpointClose start
3 27, 2018 h:mm:ss ߌ org.hsqldb.persist.Logger logInfoEvent
: checkpointClose synched
3 27, 2018 h:mm:ss ߌ org.hsqldb.persist.Logger logInfoEvent
: checkpointClose script done
3 27, 2018 h:mm:ss ߌ org.hsqldb.persist.Logger logInfoEvent
: checkpointClose end
Using connection: 95b9f10a-f260-477b-8a1c-0e90d1699fff