//引入 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;