Windows 10 Pro + nodejdbc で hsqldb2 にアクセスしてみる
Windows 10 Pro + nodejdbc で hsqldb2 にアクセスしてみる
参考にしたのはこちら
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: <uuid>, conn: <Connection>} 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