首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >将node-adodb与.mdb访问文件一起使用

将node-adodb与.mdb访问文件一起使用
EN

Stack Overflow用户
提问于 2021-08-24 02:55:30
回答 1查看 237关注 0票数 0

我正在尝试在Windows操作系统上编写一个容器化的Node应用程序,它接收Microsoft Access数据库并访问其中的数据。我希望使用npm node-adodb与Access进行交互。

我的应用程序可以很好地处理.accdb Access文件。当我尝试连接到.mdb Access文件时,我得到这个错误Spawn C:\Windows\SysWOW64\cscript.exe error, Provider cannot be found. It may not be properly installed。我的代码可以在本地Windows计算机上运行,所以我猜这与容器环境的设置方式有关。

我像这样设置了基本Dockerfile:

代码语言:javascript
运行
复制
# Get base Windows OS image
FROM mcr.microsoft.com/windows/servercore:ltsc2019

# Set environment variables
ENV NPM_CONFIG_LOGLEVEL info
ENV NODEJS_VERSION 12.9.1

# Download & Install 2010 Access Driver
RUN powershell -Command "wget -Uri https://download.microsoft.com/download/2/4/3/24375141-E08D-4803-AB0E-10F2E3A07AAA/AccessDatabaseEngine.exe -OutFile AccessDatabaseEngine.exe -UseBasicParsing"
RUN powershell -Command "Start-Process -NoNewWindow -FilePath \"AccessDatabaseEngine.exe\""

# Download & Install 2016 Access Driver
RUN powershell -Command "wget -Uri https://download.microsoft.com/download/3/5/C/35C84C36-661A-44E6-9324-8786B8DBE231/accessdatabaseengine_X64.exe -OutFile accessdatabaseengine_X64.exe -UseBasicParsing"
RUN powershell -Command "Start-Process -NoNewWindow -FilePath \"accessdatabaseengine_X64.exe\""

# Download and install Node.js
RUN powershell -Command "wget -Uri https://nodejs.org/dist/v%NODEJS_VERSION%/node-v%NODEJS_VERSION%-x64.msi -OutFile node.msi -UseBasicParsing"
RUN msiexec.exe /q /i node.msi

# Run node
CMD [ "node" ]

我像这样建立访问连接。我如何实例化连接取决于我是在本地环境中还是在线环境中。它在.accdb和.mdb上也有所不同:

代码语言:javascript
运行
复制
// Define connection string & initialize export connection depending on if it's a .accdb .mdb file
let access;
if ((file.path).substring(Math.max(0, (file.path).toString().length - 5)) === 'accdb') {
    const connStr = `Provider=Microsoft.ACE.OLEDB.12.0;Data Source=${file.path};Persist Security Info=False;`;
    access = ADODB.open(connStr); // This works
} else {
    const connStr = `Provider=Microsoft.Jet.OLEDB.4.0;Data Source=${file.path};`;
    access = ADODB.open(connStr); // This fails
}

是否还需要安装其他软件包才能处理.mdb文件?我需要以不同的方式连接吗?任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

发布于 2021-08-30 08:33:19

对于来自"C:\Windows\SysWOW64\cscript.exe“的错误消息,请确保您安装了32位版本的"Microsoft Access数据库引擎”分发包。

如果您安装了64位引擎软件包,请按如下方式打开数据库连接:

代码语言:javascript
运行
复制
access = ADODB.open(connStr, true);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68901238

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档