102 lines
2.5 KiB
JavaScript
102 lines
2.5 KiB
JavaScript
//引入 dmdb 包
|
|
var db = require('dmdb');
|
|
var fs = require('fs');
|
|
const dbConfig = require("../config/db.json").db_config;
|
|
var pool, conn;
|
|
let dataBase = {};
|
|
|
|
//创建连接池
|
|
async function createPool() {
|
|
try {
|
|
var connect = "dm://" + dbConfig.username + ":" + dbConfig.password + "\@" + dbConfig.host + ":" + dbConfig.port + "?autoCommit=false&loginEncrypt=false";
|
|
console.log(connect);
|
|
|
|
return db.createPool({
|
|
connectString: connect,
|
|
poolMax: 10,
|
|
poolMin: 1
|
|
});
|
|
} catch (err) {
|
|
throw new Error("createPool error: " + err.message);
|
|
}
|
|
}
|
|
|
|
//获取数据库连接
|
|
async function getConnection() {
|
|
try {
|
|
return pool.getConnection();
|
|
} catch (err) {
|
|
throw new Error("getConnection error: " + err.message);
|
|
}
|
|
}
|
|
|
|
//读取数据库返回的 Lob 对象
|
|
dataBase.readLob = (lob) => {
|
|
return new Promise(function (resolve, reject) {
|
|
var blobData = Buffer.alloc(0);
|
|
var totalLength = 0;
|
|
lob.on('data', function (chunk) {
|
|
totalLength += chunk.length;
|
|
blobData = Buffer.concat([blobData, chunk], totalLength);
|
|
});
|
|
lob.on('error', function (err) {
|
|
reject(err);
|
|
});
|
|
lob.on('end', function () {
|
|
resolve(blobData);
|
|
});
|
|
});
|
|
}
|
|
|
|
dataBase.initDB = async () => {
|
|
pool = await createPool();
|
|
conn = await getConnection();
|
|
}
|
|
|
|
dataBase.closeDB = async () => {
|
|
try {
|
|
await conn.close();
|
|
await pool.close();
|
|
} catch (err) {
|
|
throw new Error("closeDB error: " + err.message);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* 查询表中字段
|
|
* @param tableName 数据库表名
|
|
* @param params 需要查询的字段
|
|
* @param whereSql 查询条件
|
|
*/
|
|
dataBase.queryTable = async (tableName, params, whereSql) => {
|
|
try {
|
|
var sql = "";
|
|
if (params != "") {
|
|
for (let index in params) {
|
|
if (sql != "") {
|
|
sql += ", ";
|
|
}
|
|
sql += params[index];
|
|
}
|
|
}
|
|
else {
|
|
sql = "*";
|
|
}
|
|
|
|
var sql = "SELECT " + sql + " FROM " + tableName;
|
|
|
|
if (whereSql != "") {
|
|
sql += " WHERE " + whereSql;
|
|
}
|
|
|
|
console.log(sql);
|
|
|
|
var result = await conn.execute(sql, [], { resultSet: true });
|
|
var resultSet = result.resultSet;
|
|
return resultSet;
|
|
} catch (err) {
|
|
throw new Error("queryTable error: " + err.message);
|
|
}
|
|
}
|
|
|
|
module.exports = dataBase; |