bmh_admin/util/dmDB.js

102 lines
2.5 KiB
JavaScript
Raw Normal View History

2025-03-14 09:04:22 +00:00
//引入 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;