首页 > 解决方案 > 如何关闭 JDBC 连接

问题描述

我有一个通过 JDBC 连接执行存储过程(Caché)的功能

async function callStored(query, callBack) {
  var hsqldb = new JDBC(jdbcconfig);
  hsqldb.initialize(function(err) {
    if (err) {
      console.log(err);
    }
  });
  hsqldb.reserve(function(err, connObj) {
    if (connObj) {
      console.log("Using connection: " + connObj.uuid);
      var conn = connObj.conn;
      conn.createStatement(function(jdbcerr, statement) {
        if (jdbcerr) {
          console.log('jdbc err', jdbcerr);
        }
        statement.executeQuery(query, function(statserr, resultset) {
          if (statserr) {
            console.log('stats err', statserr);
          }
          resultset.toObjArray(function(arrayerr, results) {
            if (arrayerr) {
              console.log('arrayerr err', arrayerr);
            }
            hsqldb.release(connObj, function(relerr) {
              if (relerr) {
                console.log('relerr err', relerr);
              }
            hsqldb.purge(function(purgerr) {
                if (purgerr) {
                  console.log('purgerr err', purgerr.message);
                }
              })
            })

            callBack(results);  

          })
        })
      })
    }
  })
}

我想在获取数据后关闭连接,但连接仍在连接。我能怎么做?

标签: node.jsjdbcconnection

解决方案


https://github.com/CraZySacX/node-jdbc#readme

从文档中听起来您可能不想手动关闭连接,而只是将它们释放回池中。您可以通过最大空闲时间来自动关闭陈旧的连接

“如果你在配置中为新的连接池传递 maxidle 属性,pool.reserve() 将关闭陈旧的连接,并返回一个足够新鲜的连接,或者一个新的连接。maxidle 可以是表示自以来最大毫秒数的数字最后一次使用连接,连接仍然被认为是活动的(没有额外调用数据库来检查连接是否有效)。如果 maxidle 是假值或配置中不存在,则不会使用此功能效果。此功能非常有用,当连接在一定时间后从服务器端自动关闭时,以及不适合使用连接保活功能时。


推荐阅读