问题标签 [node-odbc]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
odbc - node-odbc 中准备好的语句出错
我正在尝试针对 vertica 运行 node-odbc,并且在运行简单的准备好的语句时遇到了一个奇怪的错误。该行已插入数据库中,但程序退出时statement.execute()
出现以下错误:
$ 节点 index.js
未定义:0错误:参数无效
node.js - 无法在 INSERT 语句中使用正文值
我有一个 post 路由,期望发送以 JSON 格式提供的正文值名称。
我的 server.js 包括:
这是路线的外观:
变量之前的 console.log 为我提供了提供给路由的正确值。通常,当使用其他针对 sqlserver 的工具时,我已经能够放入 ${req.body.name} 并且这会起作用。在这种情况下,和以下都不起作用 - (req.body.name)、:req.body.name、(req.body.name) 和其他各种组合。
下面看一下我如何为路线提供值:
如何在 Insert 语句中使用正文值?
node.js - 如何查询 node-odbc/sybase 中的存储过程?
经过大量的 google-fu 之后,我找到了一种查询古老 sybase 数据库的方法,以开始为我正在使用 node-odbc 开发的移动应用程序构建一个 rest api ( https://github.com/markdirish/node- odbc/blob/master/README.md#callprocedurecatalog-schema-name-parameters-callback)。
我已经成功地使用 select 语句进行了查询,但出于安全目的,我不希望这样做。当我尝试使用存储过程时,我得到了一个奇怪的响应。我需要在这里进行健全性检查并找出我缺少的东西。
我尝试的一个示例存储过程是一个简单的 sp,它带有一个参数来使用帐号检查电子邮件地址(当然这是一个假 sp,但格式相同):
"DB"."spGetEmail"(@acctnum varchar(50))
文档显示了这一点:
常量 odbc = 要求('odbc');
odbc.connect( ${process.env.CONNECTION_STRING}
, (error, connection) => { connection.callProcedure(null, null, 'MY_PROC', [undefined], (error, result) => { if (error) { console.error(error) } / /handle // result 包含一个结果数组,并且有一个parameters
属性来访问过程返回的参数。console.log(result); }); });
我将其解释为如下所示:
odbc.connect(${process.env.CONNECTION_STRING}, (error, connection) => { connection.callProcedure(null, "DB", "spGetEmail", [123456], (error, result) => { if (error ) { console.error(error) } // 句柄 // result 包含一个结果数组,并且有一个parameters
属性可以访问过程返回的参数。console.log(result); }); });
然后我得到这个:
[错误:[odbc] 过程期望的参数个数和传递的参数个数不相等] { odbcErrors: [] } undefined Segmentation fault
似乎很简单,我缺少一些参数,但我知道我没有。dang sp 采用一个参数!
我在这里想念什么?
node.js - Windows 上的 node-odbc 开发和 linux 上的部署
我被要求处理需要 ODBC 数据库连接的 API,我们通常使用 Express 作为 API。
由于 ODBC 的底层操作系统要求,是否可以在 windows 中使用 ODBC 开发应用程序,然后部署到 linux 上?
他们对最适合这个用例的 ODBC 库有什么建议吗?
在这种情况下,Python 和 PyODBC 会是更好的选择吗?
docker - 将节点 odbc 与 Microsoft Access 一起使用
我正在尝试编写一个容器化的 Node 应用程序,它接收 Microsoft Access 数据库并访问其中的数据。我想将应用程序放在 docker 容器中,并希望使用 npm odbc与 Access 进行交互。我没有太多创建容器的经验,所以这是一个学习过程。
我正在努力为 Access 安装和配置 odbc。根据我链接的文档,odbc 有三个要求。
- 安装 unixODBC 和 unixODBC-devel
- 为目标数据库安装 ODBC 驱动程序
- 定义 odbc.ini 和 odbcinst.ini
我正在努力让任何数量的 odbc 功能正常工作,所以我认为问题是我没有正确配置环境。这是我定义容器环境的基础 Dockerfile。运行 AccessDatabaseEngine.exe 文件会返回 Not Found 错误,即使我很确定该文件应该存在于那里。现在,我已经注释掉了这条线。应用程序代码从一组不同的 Dockerfile 运行,这些 Dockerfile 建立在这个基础之上。
在我的应用程序中,我尝试像这样使用 odbc。odbc 要求 #3 的连接字符串可在此处找到:
我对 odbc 要求 #1 和 #3 的实现感觉非常好,但我正在努力解决 #2(为目标数据库安装 ODBC 驱动程序)。我不仅在努力运行 AccessDatabaseEngine.exe,而且我也不能 100% 确定它是否是要尝试安装的正确文件。我遇到了这个,这似乎是我需要的 odbc 驱动程序。但是,我尝试对他们提供的代码进行 docker 化,但遇到了更多问题。
同样,我想创建一个容器化的 Node 应用程序,它使用 ODBC npm 库来访问 Microsoft Access 数据库中的数据。有没有人有这样做的经验?任何帮助,将不胜感激。提前谢谢。
node.js - [node-odbc]获取数据时分配或重新分配内存时出错。没有可用的 ODBC 错误信息
我的系统
- 数据库版本:6.1.0
- 数据库名称:Sybase
- Node.js 版本:12.18.3
- node-odbc 包版本:2.4.1
- Node.js 操作系统:Windows 10 专业版
错误
多次使用大量数据启动相同的查询 odbc 数据包返回给我以下错误“[odbc]Error allocating or relocating memory when fetching data.No ODBC error information available”。尽管结果被返回到服务响应并且变量被清理,但每个查询都会填满堆。尝试使用参数 (cursor=true) 运行查询并在不获取数据的情况下关闭游标没有问题。当我在表上有 longvarchar 字段时,也会出现同样的问题。尽管我关闭了连接,但数据库仍然显示它们打开。
预期行为
我不明白为什么系统会出现内存不足,尽管查询是一个接一个地执行的。运行一次查询不会导致问题。
重现
准备包含 22 个字段(2 个 varchar(32767))和 5633 条记录的表。通过按下打开连接的键调用服务 15 次,对表执行 SELECT 查询,关闭连接并返回结果。