na

node-adodb

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

Showing:

Popularity

Downloads/wk

313

GitHub Stars

157

Maintenance

Last Commit

10mos ago

Contributors

12

Package

Dependencies

2

License

MIT

Type Definitions

Tree-Shakeable

No?

Categories

Readme

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';
}

Rate & Review

Great Documentation0
Easy to Use0
Performant0
Highly Customizable0
Bleeding Edge0
Responsive Maintainers0
Poor Documentation0
Hard to Use0
Slow0
Buggy0
Abandoned0
Unwelcoming Community0
100
No reviews found
Be the first to rate

Alternatives

No alternatives found

Tutorials

No tutorials found
Add a tutorial