To use DBWrapper to fetch result from database, it requires dbwrapper.connect(), then execute sql statements. But DBWrapper doesn't have close method, therefore we cannot close db connection. If you run test cases in vows without close db connection, the vows process won't be over.
In my local code, I add below methods.
===========dbWrapper.js==========
DBWrapper.prototype.close = function()
{
var me = this;
if(me._connected){
me._adapter.close(function(){
me._connected = false;
});
}
};
==========adapter--mysql.js=========
Adapter.prototype.close = function(callback){
if(this._debug){
console.log('Adapter.prototype.close (' + JSON.stringify(this._connectionParams) + ')');
}
if(this._dbClient){
this._dbClient.end();
callback(0);
}else{
callback(1);
console.log('cannot close connection, since it is not connected');
}
};
=============adapter--sqlite.js================
Adapter.prototype.close = function(callback){
if(this._debug){
console.log('Adapter.prototype.close (' + JSON.stringify(this._connectionParams) + ')');
}
if(this._dbClient){
this._dbClient.close(callback);
}else{
callback(1);
console.log('cannot close connection, since it is not connected');
}
};
============dbAdapterAbstract.js=============
DBAdapterAbstract.prototype.close = function(callback)
{
throw new Error('DB Adapter implementations must override DBAdapterAbstract.prototype.close() !');
};
===========How to use it==========
var DBWrapper = require('node-dbi').DBWrapper;
var dbwrapper = new DBWrapper('mysql', yourConnectionParams);
dbwrapper.connect();
dbwrapper.fetchAll('select * from user', null, function(err, result){
//your code to process result
dbwrapper.close();
});
To use DBWrapper to fetch result from database, it requires dbwrapper.connect(), then execute sql statements. But DBWrapper doesn't have close method, therefore we cannot close db connection. If you run test cases in vows without close db connection, the vows process won't be over.
In my local code, I add below methods. ===========dbWrapper.js========== DBWrapper.prototype.close = function() { var me = this; if(me._connected){ me._adapter.close(function(){ me._connected = false; }); } };
==========adapter--mysql.js========= Adapter.prototype.close = function(callback){ if(this._debug){ console.log('Adapter.prototype.close (' + JSON.stringify(this._connectionParams) + ')'); } if(this._dbClient){ this._dbClient.end(); callback(0); }else{ callback(1); console.log('cannot close connection, since it is not connected'); } };
=============adapter--sqlite.js================ Adapter.prototype.close = function(callback){ if(this._debug){ console.log('Adapter.prototype.close (' + JSON.stringify(this._connectionParams) + ')'); } if(this._dbClient){ this._dbClient.close(callback); }else{ callback(1); console.log('cannot close connection, since it is not connected'); } };
============dbAdapterAbstract.js=============
DBAdapterAbstract.prototype.close = function(callback) { throw new Error('DB Adapter implementations must override DBAdapterAbstract.prototype.close() !'); };
===========How to use it========== var DBWrapper = require('node-dbi').DBWrapper; var dbwrapper = new DBWrapper('mysql', yourConnectionParams); dbwrapper.connect(); dbwrapper.fetchAll('select * from user', null, function(err, result){ //your code to process result dbwrapper.close(); });