ibm_db
Version:
IBM DB2 and IBM Informix bindings for node
139 lines (130 loc) • 5.22 kB
JavaScript
var common = require("./common")
, ibmdb = require("../")
, assert = require("assert")
, cn = common.connectionString;
var platform = require('os').platform();
console.log("Trying to open a connection ... ");
console.log("Connection String =", cn);
ibmdb.open(cn, {"fetchMode": 3}, function(err, conn) { // 3 means FETCH_ARRARY
if(err) console.log(err);
assert.equal(err, null);
console.log(" ... Got the connection.");
try{
conn.querySync("drop table mytab1");
} catch (e) {}
if (platform == 'os390') {
conn.querySync("create table mytab1 (c1 int, c2 varchar(10)), c3 blob(100) ccsid UNICODE");
} else {
conn.querySync("create table mytab1 (c1 int, c2 varchar(10), c3 blob(100))");
}
var stmt = conn.prepareSync("insert into mytab1 values ( ?, ?, ?)");
var param = { CType: 'BLOB', DataType: 'BLOB', Data: null };
var insertedRows = stmt.executeNonQuerySync([4, 'für', param]);
console.log("insertedRows = ", insertedRows);
stmt.closeSync();
conn.query('select 1, 4, 5 from sysibm.sysdummy1;', function (err, data) {
if (err) {
console.log(err);
} else {
console.log(data);
conn.query('select * from mytab1 where c1 = 2;', function (err, data) {
if (err) {
console.log(err);
} else {
console.log(data);
conn.query('select 3,7,8 from sysibm.sysdummy1', [23], function (err, data) {
if (err) {
console.log(err);
} else {
console.log( data);
}
});
}
var d=conn.querySync("select * from mytab1 where (UCASE(C2) LIKE '%FÜR%' OR UCASE(C2) LIKE '%FüR%') FOR READ ONLY WITH UR OPTIMIZE FOR 50 ROWS");
console.log("Selected data with special character = ", d);
assert.equal(d.length, 1);
conn.prepare("insert into mytab1 VALUES (?, ?, ?)", function (err, stmt) {
if (err) {
//could not prepare for some reason
console.log(err);
stmt.closeSync();
return conn.closeSync();
}
//Bind and Execute the statment asynchronously
stmt.executeNonQuery([34245, 'bimal', param], function (err, ret) {
if (err) {
console.log(err);
console.log(err.sqlcode);
stmt.closeSync();
}
//else ret.closeSync(); // call closeSync() for execute().
else console.log("Inserted row count = " + ret);
assert.equal(ret, 1);
conn.prepare("select * from mytab1", function (err, stmt) {
if(err) {
console.log(err);
stmt.closeSync();
return conn.closeSync();
}
stmt.execute([], function(err, result) {
if (err) {
console.log(err);
stmt.closeSync();
}
else {
data = result.fetchAllSync(); // Use fetchAllSync({fetchMode:3}) to get data as array.
console.log("Column Names = ", result.getColumnNamesSync());
console.log("Column Meta Data = ", result.getColumnMetadataSync());
console.log("Fetched Data = " );
console.log(data);
result.closeSync();
stmt.closeSync();
assert.deepEqual(data, [ { C1: 4, C2: 'für', C3: null }, { C1: 34245, C2: 'bimal', C3: null } ]);
// Insert null value in BLOB colum C3, using querySync API
conn.querySync("insert into mytab1 VALUES (?, ?, ?)", [345, 'bimal', param]);
var valueArray = [];
valueArray.push(345);
data = conn.querySync('select * from mytab1 where c1 = ?;', valueArray);
console.log("conn.querySync('select * from mytab1 where c1 = ?;', valueArray)" );
console.log(data);
assert.deepEqual(data, [ [ 345, 'bimal', null ] ]);
/* Check to ensure query ignores sqlcode 100, issue #573 */
conn.query("UPDATE mytab1 set c1 = 5 where c1 = 89; select 1 " +
"from sysibm.sysdummy1;", function(error, result, sqlca) {
if(error) console.log("Error ====>> ", error);
else {
console.log("Result of UPDATE Query = ", result);
}
console.log("SQLCA = ", sqlca);
assert.equal(error, null);
/* Check for empty result set */
console.log("conn.prepare('delete from mytab1 where c1 = 89')");
conn.prepare("delete from mytab1 where c1 = 89",
function (err, stmt2) {
if(err) {
console.log(err);
stmt2.closeSync();
return conn.closeSync();
}
stmt2.executeNonQuery(function(err, rows) {
if (err) {
console.log(err);
assert.equal(rows, 1); //It should always assert.
}
console.log("Deleted row count = " + rows);
stmt2.closeSync();
conn.querySync("drop table mytab1");
conn.close(function () { console.log('done'); });
ibmdb.close();
});
}); // conn.prepare
}); // conn.query
}
});
});
});
});
});
}
});
});