一个用 Node.js 实现的 windows 上的 ADODB 协议。
'use strict';constADODB=require('node-adodb');constconnection=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);});'use strict';constADODB=require('node-adodb');constconnection=ADODB.open('Provider=Microsoft.Jet.OLEDB.4.0;Data Source=node-adodb.mdb;');asyncfunctionquery(){try{constusers=awaitconnection.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
如果你想在
ASAR包中运行这个模块,你需要做一些修改。
- 从
asar包中排除adodb.js(使用electron-builder, 可以配置extraResources将制定文件排除在外)
"extraResources": [
{
"from": "./node_modules/node-adodb/lib/adodb.js",
"to": "adodb.js"
}
]
- 告诉
asar从哪里运行adodb.js(可以将配置写在Electron的main.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.jsADODB.PATH='./resources/adodb.js';}