从 NodeJs 读取访问数据库

时间:2021-05-25 07:31:35

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

问题

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

方法

我找到了 node-odbc。查看以下代码段的文档应该可以正常工作:

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

1 个答案:

答案 0 :(得分:0)

我发现了另一个名为 node-adodb 的包。下面的代码片段对我来说很好用,有密码保护的数据库。 此外,通过使用 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))
});