nodejs + access 应用

    机缘巧合,为了省事和轻便安装了access数据库,也是为了省事 写了node服务,来解决http请求一些列的操作。

网上搜索了一圈,都是通过odbc来解决access 和 nodejs 之间的联系,那么我就开始着手解决,我的系统环境:win10  + node 12.1 + access2013 64位

这里特别强调: access的db创建的版本与使用版本与odbc的版本必须一致 ,我在这里踩过坑,我把32位建的access db 拿到64位的access使用就出现问题 

 

1.odbc的配置

注意一定是统一:  64位置odbc 配置 access 也是64位

 nodejs + access 应用

 

 

nodejs + access 应用

 

 

 

 

 

2.node 编写

node需要安装odbc,我直接安装了一个最新版本  

"_id": "odbc@2.3.6",

测试脚本按照 npm里面 odbc给的脚本测试即可

nodejs + access 应用

 

 

 

写到这里看似简单,中途遇到的问题 解题思路也是千奇百怪

access版本问题与odbc的版本不一致的问题

也测试了js脚本 js 采用 ActiveXObject 来创建adodb 来解决, 当时考虑node里面有ActiveXObject 这个对象么?网上还有人真这么干 ,大家有兴趣可以搜来看看

在解题思路上越跑越偏 附上js的执行connectString 

var connectString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\\ATest.mdb;Persist Security Info=False";
    try
    {
        var ocon = new ActiveXObject("ADODB.Connection"); // 打开连接 
        ocon.Open(connectString, "", ""); // ConnectionString, UserId, Password
        // 如果出现:”未找到提供程序。该程序可能未正确安装。“,请注册OracleODBC
        //Debug.writeln("connect ok!");

        // 1.查询数据
        var ors = new ActiveXObject("ADODB.Recordset"); 
        ors.ActiveConnection = ocon;
        ors.Source = "select * from Task";
        ors.Open(); // strCommand,ActiveConnection,int CursorType,intLockType, intCommandType 
        //Debug.writeln("select ok!");
        
        while(!ors.EOF)
        {
            var tokenID = ors.Fields(0);// Fields[FieldNo]: Fields[FieldNo]
            var changeCode = ors.Fields(1);

            //Debug.writeln(Mgr.DefaultObject.Hex2Str(changeCode));
            //Debug.writeln("TokenID=" + tokenID + "\tChangeCode=" + changeCode);
            ors.MoveNext();
        }
        ors.Close();
        
        // var ocmd = new ActiveXObject("ADODB.Command"); 
        // ocmd.ActiveConnection = ocon;
        // ocmd.CommandText = "update aaa set ChangeCode='' where TokenID='TDR000000010'";
        // ocmd.Execute();
    }
    catch(e)
    {
        //Debug.writeln("ERROR:" + e.message);
        throw e;
    }

 

上一篇:DM8_ODBC配置


下一篇:[DBNETLIB]ConnectionOpen (SECCreateCredentials()).