我使用JDBC驱动程序连接到我的数据库(由Centura Gupta公司使用名为SQLBase的DBMS制作(。
它的执行没有问题(即使我检查了数据是否已插入到我的数据库中(。
但是后来我执行了一个非常简单的 SELECT 语句,我得到这个错误:
TypeError: Cannot read property 'createStatement' of undefined
at /var/apis/api.test/connections/sqlbase.dposs1.js:86:25
at JDBC.Pool.reserve (/var/apis/api.test/node_modules/jdbc/lib/pool.js:192:5)
at Object.getCenturaQuery (/var/apis/api.test/connections/sqlbase.dposs1.js:79:15)
at Object.verificarPagos (/var/apis/api.test/app/bancos/bancos.model.js:146:20)
at getFacturas (/var/apis/api.test/app/bancos/bancos.rutas.js:7:18)
at Layer.handle [as handle_request] (/var/apis/api.test/node_modules/express/lib/router/layer.js:95:5)
at next (/var/apis/api.test/node_modules/express/lib/router/route.js:131:13)
at Route.dispatch (/var/apis/api.test/node_modules/express/lib/router/route.js:112:3)
at Layer.handle [as handle_request] (/var/apis/api.test/node_modules/express/lib/router/layer.js:95:5)
at /var/apis/api.test/node_modules/express/lib/router/index.js:277:22
我认为发布声明未正确执行。
我使用我在这里看到的这段代码:https://www.npmjs.com/package/jdbc
myConnection.release(connObj, function(err) {
if (err) {
console.log(err.message);
}
});
发布后,我仍然有这个 JSON 连接对象(我认为它应该不再存在,但它仍然存在(:
{
"uuid": "30271a1a-db99-4ff2-8b6a-5befcbe8fbb4",
"conn": {
"_conn": {
"warnings": null
},
"_txniso": [
"TRANSACTION_NONE",
"TRANSACTION_READ_UNCOMMITTED",
"TRANSACTION_READ_COMMITTED",
null,
"TRANSACTION_REPEATABLE_READ",
null,
null,
null,
"TRANSACTION_SERIALIZABLE"
]
},
"keepalive": false
}
在执行 SELECT 语句之前,如何检查连接是否已成功释放?
我认为问题出在这个 JSON 连接对象上。
也许它有帮助:我正在服务器端使用 JavaScript 和 NodeJS 进行开发。
我不是 JavaScript 人 - 但我是 Gupta SQLBase 人,逻辑告诉我,如果你释放了句柄(连接(,你就不能运行"选择"。通常,在Gupta自己的工具集中,你会按照这样的顺序执行:1( 连接手柄2((可选(将隔离级别设置为"释放锁定"或"已提交读 1、2 或 3"。3( 使用相同的句柄运行更新4(使用相同的句柄运行提交5( 使用相同的句柄运行选择6( (可选(松开手柄(或重复使用(
如果我误解了 JavaScript 的工作方式,请原谅 - 只能就 Gupta 的工作方式提出建议。