【问题标题】:Read Access Database from NodeJs从 NodeJs 读取访问数据库
【发布时间】:2021-08-13 10:27:57
【问题描述】:

问题

我需要访问 access 数据库 (*.mdb) 的数据。该方法应该用 nodejs 编写,并由多个用户使用,这些用户应该不需要对 Windows 中的 ODBC 驱动程序列表进行任何更改。

方法

我找到了node-odbc。查看 sn-p 之后的文档应该可以正常工作:

const db = require('odbc');

const cn = `Provider=Microsoft.Jet.OLEDB.12.0;Data Source=C:\\Users\\some\\Dev\\db.mdb`;

db.connect(cn, (err, connection) => {
    if (err) {
        console.error(err);
    }
    console.log(connection);
});

不幸的是,这是我得到的输出:

[Error: [odbc] Error connecting to the database] {
  odbcErrors: [
    {
      state: 'IM002',
      code: 0,
      message: '[Microsoft][ODBC Driver Manager] The DSN could not be found and' +
        'there was no default driver specified'
    }
  ]
}
null

【问题讨论】:

  • 让我直截了当地说:您想使用 Node.JS 中的 Access,但是却神奇地不使用任何外部驱动程序?好吧,我猜是从here 开始,然后开始完全用 JavaScript 编写自己的驱动程序。祝你好运。
  • @ErikA 非常感谢,但这基本上不是重点。我只是不希望用户手动下载任何东西。在某种二进制文件中包含驱动程序也可以正常工作。但是除了这件事,我需要下载什么驱动程序才能让它工作? Jet.OLEDB.12?
  • 好吧,驱动程序是专有的,并且与不同位的现有安装冲突,所以如果你想自动安装驱动程序,你就不走运了。您确实希望您的用户正确设置 Access,或者希望完全使用不同的数据库。
  • 非常感谢@ErikA,非常感谢您的帮助!

标签: node.js odbc ms-access-2010


【解决方案1】:

我找到了另一个名为node-adodb 的包。下面的 sn-p 对我来说非常适合使用受密码保护的数据库。 此外,通过使用 SysWOW64 cscripts.exe 文件,修复了此软件包 x64 和 x86 之间的差异。

const adodb = require('node-adodb');

const cn = 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb;Jet OLEDB:Database Password=MyPassword;';

const connection = adodb.open(cn);

connection.query("SELECT name FROM users WHERE firstname='John';").then((data) => {
    console.log(data);
}).catch(err => {
    console.error(JSON.stringify(err))
});

【讨论】:

    猜你喜欢
    • 2011-08-27
    • 2015-03-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-27
    • 1970-01-01
    • 2019-04-14
    相关资源
    最近更新 更多