Archive for 9月 15th, 2012

  1. Hello, DAO(JScript) World!

    Posted on 9月 15th, 2012 by cx20

    DAO

    DAO(Data Access Object)は、マイクロソフト社が開発した COM ベースの DBMS 接続用 API である。
    主に Jet データベース(Access MDB)との接続に用いられるが、ODBC 経由で他の DBMS への接続も可能である。
    長い間 DAO は 32bit 版のみしか提供されていなかったが、DAO 12 より 64bit 版が提供されるようになった。

    クライアントアプリケーション データベースエンジン 推奨されるデータベース形式
    Access 2.0 Jet 2.0 *.mdb (Jet 2.0)
    Access 95 Jet 3.0 *.mdb (Jet 3.x)
    Access 97 Jet 3.5 *.mdb (Jet 3.x)
    Access 2000 Jet 4.0 *.mdb (Jet 4.x)
    Access 2002 Jet 4.0 *.mdb (Jet 4.x)
    Access 2003 Jet 4.0 *.mdb (Jet 4.x)
    Access 2007 ACE 12.0 (32bit) *.accdb (ACE 12.0)
    Access 2010 (32bit) ACE 12.0 (32bit) *.accdb (ACE 12.0)
    Access 2010 (64bit) ACE 12.0 (64bit) *.accdb (ACE 12.0)
    DAO 3.0 Jet 3.0 *.mdb (Jet 3.x)
    DAO 3.5 Jet 3.5 *.mdb (Jet 3.x)
    DA0 3.6 Jet 4.0 *.mdb (Jet 4.x)
    DA0 12 (32bit) ACE 12.0 (32bit) *.accdb (ACE 12.0)
    DA0 12 (64bit) ACE 12.0 (64bit) *.accdb (ACE 12.0)
    Microsoft.Jet.OLEDB.3.51 Jet 3.5 *.mdb (Jet 3.x)
    Microsoft.Jet.OLEDB.4.0 Jet 4.0 *.mdb (Jet 4.x)
    Microsoft.ACE.OLEDB.12.0 (32bit) ACE 12.0 (32bit) *.accdb (ACE 12.0)
    Microsoft.ACE.OLEDB.12.0 (64bit) ACE 12.0 (64bit) *.accdb (ACE 12.0)

    ソースコード(JScript + DAO + Jet データベース)

    main();
     
    function main() {
        var dbe = new ActiveXObject("DAO.DBEngine.36");
        var db = dbe.OpenDatabase("Hello.mdb");
        var rs = db.OpenRecordset("SELECT 'Hello, DAO World!' AS Message");
     
        while ( !rs.EOF )
        {
            WScript.Echo( rs(0).Name );
            WScript.Echo( "-------------------" );
            WScript.Echo( rs(0).Value );
            rs.MoveNext();
        }
     
        rs.Close();
        db.Close();
    }

    ソースコード(JScript + DAO + ACE データベース)

    main();
     
    function main() {
        var dbe = new ActiveXObject("DAO.DBEngine.120");
        var db = dbe.OpenDatabase("Hello.accdb");
        var rs = db.OpenRecordset("SELECT 'Hello, DAO World!' AS Message");
     
        while ( !rs.EOF )
        {
            WScript.Echo( rs(0).Name );
            WScript.Echo( "-------------------" );
            WScript.Echo( rs(0).Value );
            rs.MoveNext();
        }
     
        rs.Close();
        db.Close();
    }

    ソースコード(JScript + DAO + ODBC + SQL Server)

    main();
     
    function main() {
        var dbe = new ActiveXObject("DAO.DBEngine.36");
        var db = dbe.OpenDatabase( "", false, false, 
              "ODBC;Driver={SQL Server};"
            + "SERVER=(local);DATABASE=master;" 
            + "UID=sa;PWD=P@ssW0rd" );
        var rs = db.OpenRecordset("SELECT 'Hello, DAO World!' AS Message");
     
        while ( !rs.EOF )
        {
            WScript.Echo( rs(0).Name );
            WScript.Echo( "-------------------" );
            WScript.Echo( rs(0).Value );
            rs.MoveNext();
        }
     
        rs.Close();
        db.Close();
    }

    ソースコード(JScript + DAO + ODBC + Oracle)

    var dbOpenSnapshot = 4;
    var dbSQLPassThrough = 64;
     
    main();
     
    function main() {
        var dbe = new ActiveXObject("DAO.DBEngine.36");
        var db = dbe.OpenDatabase( "", false, false, 
              "ODBC;Driver={Oracle in OraDb11g_home1};"
            + "DBQ=ORCL;" 
            + "UID=scott;PWD=tiger" );
        var rs = db.OpenRecordset("SELECT 'Hello, DAO World!' AS Message");
        // パススルークエリの例(データベース側に依存する SQL を実行する場合)
        //var rs = db.OpenRecordset("SELECT 'Hello, DAO World!' AS Message FROM DUAL", dbOpenSnapshot, dbSQLPassThrough );
     
        while ( !rs.EOF )
        {
            WScript.Echo( rs(0).Name );
            WScript.Echo( "-------------------" );
            WScript.Echo( rs(0).Value );
            rs.MoveNext();
        }
     
        rs.Close();
        db.Close();
    }

    実行方法(Windows)

    C:¥> CScript //Nologo Hello.js

    実行結果

    Message
    -----------------
    Hello, DAO World!