zoukankan      html  css  js  c++  java
  • 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位

     

    2.node 编写

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

    "_id": "odbc@2.3.6",

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

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

    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 + "	ChangeCode=" + 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;
        }
  • 相关阅读:
    【LeetCode】Rotate List
    【LeetCode】Longest Valid Parentheses
    【LeetCode】Longest Substring Without Repeating Characters
    【LeetCode】Multiply Strings
    【LeetCode】Triangle
    hdfs 查看报告--命令(hdfs dfsadmin -report)
    hive
    java ---面向对象
    java--数组
    java--函数
  • 原文地址:https://www.cnblogs.com/wanglinglong/p/14862969.html
Copyright © 2011-2022 走看看