Skip to content

nuintun/node-adodb

Repository files navigation

node-adodb

一个用 Node.js 实现的 windows 上的 ADODB 协议。

NPM Version Download Status Windows Status Test Coverage Node Version Dependencies

安装

NPM

使用示例:

ES6
'use strict'; const ADODB = require('node-adodb'); const connection = ADODB.open('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=node-adodb.mdb;'); // 交易 connection .transaction([`INSERT INTO Users(UserId, UserName, UserSex, UserBirthday, UserMarried) VALUES (10, "Tom", "Male", "1981/5/10", 0);`, `INSERT INTO Users(UserId, UserName, UserSex, UserBirthday, UserMarried) VALUES (11, "Brenda", "Female", "2001/1/11", 0);`, `INSERT INTO Users(UserId, UserName, UserSex, UserBirthday, UserMarried) VALUES (10, "Bill", "Male", "1991/3/9", 0);`]) .then(data => { console.log("我们不会到达,因为生成了重复的ID。遇到错误时,请勿插入任何记录。"); }) .catch(error => { console.error(error); }); // 不带返回的执行 connection .execute('INSERT INTO Users(UserName, UserSex, UserAge) VALUES ("Newton", "Male", 25)') .then(data => { console.log(JSON.stringify(data, null, 2)); }) .catch(error => { console.error(error); }); // 带返回标识的执行 connection .execute('INSERT INTO Users(UserName, UserSex, UserAge) VALUES ("Newton", "Male", 25)', 'SELECT @@Identity AS id') .then(data => { console.log(JSON.stringify(data, null, 2)); }) .catch(error => { console.error(error); }); // 带返回的查询 connection .query('SELECT * FROM Users') .then(data => { console.log(JSON.stringify(data, null, 2)); }) .catch(error => { console.error(error); }); // 带字段描述的查询 connection .schema(20) .then(schema => { console.log(JSON.stringify(schema, null, 2)); }) .catch(error => { console.error(error); });
ES7 async/await
'use strict'; const ADODB = require('node-adodb'); const connection = ADODB.open('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=node-adodb.mdb;'); async function query() { try { const users = await connection.query('SELECT * FROM Users'); console.log(JSON.stringify(users, null, 2)); } catch (error) { console.error(error); } } query();

接口文档:

ADODB.open(connection[, x64]): ADODB

初始化数据库链接参数。

ADODB.query(sql): Promise

执行有返回值的 SQL 语句。

ADODB.execute(sql[, scalar]): Promise

执行无返回值或者带更新统计的的 SQL 语句。

ADODB.transaction(sql[]): Promise

执行多个SQL语句作为事务。

ADODB.schema(type[, criteria][, id]): Promise

查询数据库架构信息。参考: OpenSchema

调试:

设置环境变量 DEBUG=ADODB。参考: debug

扩展:

该类库理论支持 Windows 平台下所有支持 ADODB 连接的数据库,只需要更改数据库连接字符串即可实现操作!

数据库连接字符串:

  • Access 2000-2003 (*.mdb): Provider=Microsoft.Jet.OLEDB.4.0;Data Source=node-adodb.mdb;
  • Access > 2007 (*.accdb): Provider=Microsoft.ACE.OLEDB.12.0;Data Source=adodb.accdb;Persist Security Info=False; 或者   Provider=Microsoft.ACE.OLEDB.15.0;Data Source=adodb.accdb;Persist Security Info=False;

注意:

该类库需要系统支持 Microsoft.Jet.OLEDB.4.0 或者 Microsoft.ACE.OLEDB.12.0,对于 Windows XP SP2 以上系统默认支持 Microsoft.Jet.OLEDB.4.0,其它需要自己安装支持!

推荐使用 Microsoft.ACE.OLEDB.12.0,获取地址: Microsoft.ACE.OLEDB.12.0

Electron

如果你想在 ASAR 包中运行这个模块,你需要做一些修改。

  1. asar 包中排除 adodb.js(使用 electron-builder, 可以配置 extraResources 将制定文件排除在外)
"extraResources": [ { "from": "./node_modules/node-adodb/lib/adodb.js", "to": "adodb.js" } ]
  1. 告诉 asar 从哪里运行 adodb.js (可以将配置写在 Electronmain.js 文件中)
// Are we running from inside an asar package ? if (process.mainModule.filename.indexOf('app.asar') !== -1) { // In that case we need to set the correct path to adodb.js ADODB.PATH = './resources/adodb.js'; }

About

A node.js javascript client implementing the ADODB protocol on windows.

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Contributors 6