Archive for the ‘ADO’ Category

  1. Hello, ADO(VB6) World!

    Posted on 3月 4th, 2013 by cx20

    ADO(VB6)

    ADO(ActiveX Data Objects)は、マイクロソフト社が開発した COM ベースの DBMS 接続用 API である。
    OLE DB プロバイダを介することで様々な DBMS への接続が可能となっている。
    OLE DB プロバイダとしては、以下のようなプロバイダがある。いくつかが OS 標準で付属している他、追加インストールが可能である。

    プロバイダ名 表示名 説明
    MSDASQL Microsoft OLE DB Provider for ODBC ODBC データベース
    Microsoft.Jet.OLEDB.4.0 Microsoft OLE DB Provider for Microsoft Jet Microsoft Jet データベース
    Microsoft.ACE.OLEDB.12.0 Microsoft Office 12.0 Access Database Engine OLE DB Provider Microsoft Access データベース
    SQLOLEDB Microsoft OLE DB Provider for SQL Server Microsoft SQL Server
    SQLNCLI10 SQL Server Native Client 10.0 Microsoft SQL Server
    MSDAORA Microsoft OLE DB Provider for Oracle Oracle データベース

    ソースコード(VB6 + ADO + OLEDB + Jet データベース)

    Option Explicit
     
    Sub Main()
        Dim cn
        Dim rs
     
        Set cn = CreateObject("ADODB.Connection")
        cn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=.hello.mdb"
        Set rs = cn.Execute("SELECT 'Hello, ADO World!' AS Message")
     
        While Not rs.EOF
            Debug.Print rs(0).Name
            Debug.Print "-------------------"
            Debug.Print rs(0).Value
            rs.MoveNext
        Wend
     
        rs.Close
        cn.Close
    End Sub

    ソースコード(VB6 + ADO + OLEDB + ACE データベース)

    Option Explicit
     
    Sub Main()
        Dim cn
        Dim rs
     
        Set cn = CreateObject("ADODB.Connection")
        cn.Open "PROVIDER=Microsoft.ACE.OLEDB.12.0;Data Source=.hello.accdb"
        Set rs = cn.Execute("SELECT 'Hello, ADO World!' AS Message")
     
        While Not rs.EOF
            Debug.Print rs(0).Name
            Debug.Print "-------------------"
            Debug.Print rs(0).Value
            rs.MoveNext
        Wend
     
        rs.Close
        cn.Close
    End Sub

    ソースコード(VB6 + ADO + OLEDB + SQL Server)

    Option Explicit
     
    Sub Main()
        Dim cn
        Dim rs
     
        Set cn = CreateObject("ADODB.Connection")
        cn.Open "PROVIDER=SQLOLEDB;" & _
             "SERVER=(local);DATABASE=master;", _
             "sa", "P@ssW0rd"
        Set rs = cn.Execute("SELECT 'Hello, ADO World!' AS Message")
     
        While Not rs.EOF
            Debug.Print rs(0).Name
            Debug.Print "-------------------"
            Debug.Print rs(0).Value
            rs.MoveNext
        Wend
     
        rs.Close
        cn.Close
    End Sub

    ソースコード(VB6 + ADO + OLEDB + Oracle)

    Option Explicit
     
    Sub Main()
        Dim cn
        Dim rs
     
        Set cn = CreateObject("ADODB.Connection")
        cn.Open "PROVIDER=MSDAORA;Data Source=ORCL", "scott", "tiger"
        Set rs = cn.Execute("SELECT 'Hello, ADO World!' AS Message FROM DUAL")
     
        While Not rs.EOF
            Debug.Print rs(0).Name
            Debug.Print "-------------------"
            Debug.Print rs(0).Value
            rs.MoveNext
        Wend
     
        rs.Close
        cn.Close
    End Sub

    ソースコード(VB6 + ADO + ODBC + SQL Server)

    Option Explicit
     
    Sub Main()
        Dim cn
        Dim rs
     
        Set cn = CreateObject("ADODB.Connection")
        cn.Open "PROVIDER=MSDASQL;Driver={SQL Server};" & _
            "SERVER=(local);DATABASE=master;", _
            "sa", "P@ssW0rd"
        Set rs = cn.Execute("SELECT 'Hello, ADO World!' AS Message")
     
        While Not rs.EOF
            Debug.Print rs(0).Name
            Debug.Print "-------------------"
            Debug.Print rs(0).Value
            rs.MoveNext
        Wend
     
        rs.Close
        cn.Close
    End Sub

    ソースコード(VB6 + ADO + ODBC + Oracle)

    Option Explicit
     
    Sub Main()
        Dim cn
        Dim rs
     
        Set cn = CreateObject("ADODB.Connection")
        cn.Open "PROVIDER=MSDASQL;Driver={Microsoft ODBC for Oracle};Server=ORCL", _
            "scott", "tiger"
        Set rs = cn.Execute("SELECT 'Hello, ADO World!' AS Message FROM DUAL")
     
        While Not rs.EOF
            Debug.Print rs(0).Name
            Debug.Print "-------------------"
            Debug.Print rs(0).Value
            rs.MoveNext
        Wend
     
        rs.Close
        cn.Close
    End Sub

    ソースコード(VB6 + ADO + ODBC + MySQL)

    Option Explicit
     
    Sub Main()
        Dim cn
        Dim rs
     
        Set cn = CreateObject("ADODB.Connection")
        cn.Open "PROVIDER=MSDASQL;Driver={MySQL ODBC 5.1 Driver};Server=localhost", _
            "root", "P@ssW0rd"
        Set rs = cn.Execute("SELECT 'Hello, ADO World!' AS Message")
     
        While Not rs.EOF
            Debug.Print rs(0).Name
            Debug.Print "-------------------"
            Debug.Print rs(0).Value
            rs.MoveNext
        Wend
     
        rs.Close
        cn.Close
    End Sub

    コンパイル方法

    C:¥> vb6 /make hello.vbp

    実行結果

    Message
    -----------------
    Hello, ADO World!
  2. Hello, ADO(PHP) World!

    Posted on 9月 29th, 2012 by cx20

    ADO(PHP)

    ADO(ActiveX Data Objects)は、マイクロソフト社が開発した COM ベースの DBMS 接続用 API である。
    OLE DB プロバイダを介することで様々な DBMS への接続が可能となっている。
    OLE DB プロバイダとしては、以下のようなプロバイダがある。いくつかが OS 標準で付属している他、追加インストールが可能である。

    プロバイダ名 表示名 説明
    MSDASQL Microsoft OLE DB Provider for ODBC ODBC データベース
    Microsoft.Jet.OLEDB.4.0 Microsoft OLE DB Provider for Microsoft Jet Microsoft Jet データベース
    Microsoft.ACE.OLEDB.12.0 Microsoft Office 12.0 Access Database Engine OLE DB Provider Microsoft Access データベース
    SQLOLEDB Microsoft OLE DB Provider for SQL Server Microsoft SQL Server
    SQLNCLI10 SQL Server Native Client 10.0 Microsoft SQL Server
    MSDAORA Microsoft OLE DB Provider for Oracle Oracle データベース

    なお、PHP 5.4.5 / 5.3.15 より、COM サポートは既定では組み込まれていない為、使用するには、以下の設定を追加する必要がある。

    PHP 設定

    [COM_DOT_NET]
    extension = php_com_dotnet.dll

    ソースコード(PHP + ADO + OLEDB + Jet データベース)

    <?php
    $cn = new COM("ADODB.Connection");
    $cn->Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.Hello.mdb");
    $rs = $cn->Execute("SELECT 'Hello, ADO World!' AS Message");
     
    while (!$rs->EOF) {
        echo $rs->Fields[0]->name, "n";
        echo "-------------------n";
        echo $rs->Fields[0]->value, "n";
        $rs->MoveNext();
    }
     
    $rs->Close();
    $cn->Close();
    ?>

    ソースコード(PHP + ADO + OLEDB + ACE データベース)

    <?php
    $cn = new COM("ADODB.Connection");
    $cn->Open("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=.Hello.accdb");
    $rs = $cn->Execute("SELECT 'Hello, ADO World!' AS Message");
     
    while (!$rs->EOF) {
        echo $rs->Fields[0]->name, "n";
        echo "-------------------n";
        echo $rs->Fields[0]->value, "n";
        $rs->MoveNext();
    }
     
    $rs->Close();
    $cn->Close();
    ?>

    ソースコード(PHP + ADO + OLEDB + SQL Server)

    <?php
    $cn = new COM("ADODB.Connection");
    $cn->Open("Provider=SQLOLEDB;SERVER=(local);DATABASE=master", "sa", "P@ssW0rd");
    $rs = $cn->Execute("SELECT 'Hello, ADO World!' AS Message");
     
    while (!$rs->EOF) {
        echo $rs->Fields[0]->name, "n";
        echo "-------------------n";
        echo $rs->Fields[0]->value, "n";
        $rs->MoveNext();
    }
     
    $rs->Close();
    $cn->Close();
    ?>

    ソースコード(PHP + ADO + OLEDB + Oracle)

    <?php
    $cn = new COM("ADODB.Connection");
    $cn->Open("Provider=MSDAORA;Data Source=ORCL", "scott", "tiger");
    $rs = $cn->Execute("SELECT 'Hello, ADO World!' AS Message FROM DUAL");
     
    while (!$rs->EOF) {
        echo $rs->Fields[0]->name, "n";
        echo "-------------------n";
        echo $rs->Fields[0]->value, "n";
        $rs->MoveNext();
    }
     
    $rs->Close();
    $cn->Close();
    ?>

    実行方法(Windows)

    C:¥> php -f hello.php

    実行結果

    Message
    -----------------
    Hello, ADO World!
  3. Hello, ADO(Python) World!

    Posted on 9月 25th, 2012 by cx20

    ADO(Python)

    ADO(ActiveX Data Objects)は、マイクロソフト社が開発した COM ベースの DBMS 接続用 API である。
    OLE DB プロバイダを介することで様々な DBMS への接続が可能となっている。
    OLE DB プロバイダとしては、以下のようなプロバイダがある。いくつかが OS 標準で付属している他、追加インストールが可能である。

    プロバイダ名 表示名 説明
    MSDASQL Microsoft OLE DB Provider for ODBC ODBC データベース
    Microsoft.Jet.OLEDB.4.0 Microsoft OLE DB Provider for Microsoft Jet Microsoft Jet データベース
    Microsoft.ACE.OLEDB.12.0 Microsoft Office 12.0 Access Database Engine OLE DB Provider Microsoft Access データベース
    SQLOLEDB Microsoft OLE DB Provider for SQL Server Microsoft SQL Server
    SQLNCLI10 SQL Server Native Client 10.0 Microsoft SQL Server
    MSDAORA Microsoft OLE DB Provider for Oracle Oracle データベース

    以下は Python による ADO ライブラリの使用例となっている。

    ソースコード(Python + ADO + OLEDB + Jet データベース)

    import win32com.client
     
    cn = win32com.client.Dispatch('ADODB.Connection')
    cn.Open( "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.hello.mdb" )
    rs = cn.Execute( "SELECT 'Hello, ADO World!' AS Message" )[0]
    while not rs.EOF:
        print rs.Fields(0).Name
        print "-------------------"
        print rs.Fields(0).Value
        rs.MoveNext()
     
    rs.Close()
    cn.Close()

    ソースコード(Python + ADO + OLEDB + ACE データベース)

    import win32com.client
     
    cn = win32com.client.Dispatch('ADODB.Connection')
    cn.Open( "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=.hello.accdb" )
    rs = cn.Execute( "SELECT 'Hello, ADO World!' AS Message" )[0]
    while not rs.EOF:
        print rs.Fields(0).Name
        print "-------------------"
        print rs.Fields(0).Value
        rs.MoveNext()
     
    rs.Close()
    cn.Close()

    ソースコード(Python + ADO + OLEDB + SQL Server)

    import win32com.client
     
    cn = win32com.client.Dispatch('ADODB.Connection')
    cn.Open( "Provider=SQLOLEDB;SERVER=(local);DATABASE=master", "sa", "P@ssW0rd" )
    rs = cn.Execute( "SELECT 'Hello, ADO World!' AS Message" )[0]
    while not rs.EOF:
        print rs.Fields(0).Name
        print "-------------------"
        print rs.Fields(0).Value
        rs.MoveNext()
     
    rs.Close()
    cn.Close()

    ソースコード(Python + ADO + OLEDB + Oracle)

    import win32com.client
     
    cn = win32com.client.Dispatch('ADODB.Connection')
    cn.Open( "Provider=MSDAORA;Data Source=ORCL", "scott", "tiger" )
    rs = cn.Execute( "SELECT 'Hello, ADO World!' AS Message FROM DUAL" )[0]
    while not rs.EOF:
        print rs.Fields(0).Name
        print "-------------------"
        print rs.Fields(0).Value
        rs.MoveNext()
     
    rs.Close()
    cn.Close()

    実行方法(Windows)

    C:¥> python hello.py

    実行結果

    Message
    -----------------
    Hello, ADO World!
  4. Hello, ADO(Ruby) World!

    Posted on 9月 22nd, 2012 by cx20

    ADO(Ruby)

    ADO(ActiveX Data Objects)は、マイクロソフト社が開発した COM ベースの DBMS 接続用 API である。
    OLE DB プロバイダを介することで様々な DBMS への接続が可能となっている。
    OLE DB プロバイダとしては、以下のようなプロバイダがある。いくつかが OS 標準で付属している他、追加インストールが可能である。

    プロバイダ名 表示名 説明
    MSDASQL Microsoft OLE DB Provider for ODBC ODBC データベース
    Microsoft.Jet.OLEDB.4.0 Microsoft OLE DB Provider for Microsoft Jet Microsoft Jet データベース
    Microsoft.ACE.OLEDB.12.0 Microsoft Office 12.0 Access Database Engine OLE DB Provider Microsoft Access データベース
    SQLOLEDB Microsoft OLE DB Provider for SQL Server Microsoft SQL Server
    SQLNCLI10 SQL Server Native Client 10.0 Microsoft SQL Server
    MSDAORA Microsoft OLE DB Provider for Oracle Oracle データベース

    ソースコード(Ruby + ADO + OLEDB + Jet データベース)

    require 'win32ole'
     
    cn = WIN32OLE.new("ADODB.Connection")
    cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=.\Hello.mdb"
    rs = cn.Execute("SELECT 'Hello, ADO World!' AS Message")
     
    while !rs.EOF
        print rs.Fields[0].name + "n"
        print "-------------------n"
        print rs.Fields[0].value + "n"
        rs.MoveNext
    end
     
    rs.Close
    cn.Close

    ソースコード(Ruby + ADO + OLEDB + ACE データベース)

    require 'win32ole'
     
    cn = WIN32OLE.new("ADODB.Connection")
    cn.Open "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=.\Hello.accdb"
    rs = cn.Execute("SELECT 'Hello, ADO World!' AS Message")
     
    while !rs.EOF
        print rs.Fields[0].name + "n"
        print "-------------------n"
        print rs.Fields[0].value + "n"
        rs.MoveNext
    end
     
    rs.Close
    cn.Close

    ソースコード(Ruby + ADO + OLEDB + SQL Server)

    require 'win32ole'
     
    cn = WIN32OLE.new("ADODB.Connection")
    cn.Open "Provider=SQLOLEDB;SERVER=(local);DATABASE=master", "sa", "P@ssW0rd"
    rs = cn.Execute("SELECT 'Hello, ADO World!' AS Message")
     
    while !rs.EOF
        print rs.Fields[0].name + "n"
        print "-------------------n"
        print rs.Fields[0].value + "n"
        rs.MoveNext
    end
     
    rs.Close
    cn.Close

    ソースコード(Ruby + ADO + OLEDB + Oracle)

    require 'win32ole'
     
    cn = WIN32OLE.new("ADODB.Connection")
    cn.Open "Provider=MSDAORA;Data Source=ORCL", "scott", "tiger"
    rs = cn.Execute("SELECT 'Hello, ADO World!' AS Message")
     
    while !rs.EOF
        print rs.Fields[0].name + "n"
        print "-------------------n"
        print rs.Fields[0].value + "n"
        rs.MoveNext
    end
     
    rs.Close
    cn.Close

    実行方法(Windows)

    C:¥> ruby hello.rb

    実行結果

    Message
    -----------------
    Hello, ADO World!
  5. Hello, ADO(Perl) World!

    Posted on 9月 19th, 2012 by cx20

    ADO(Perl)

    ADO(ActiveX Data Objects)は、マイクロソフト社が開発した COM ベースの DBMS 接続用 API である。
    OLE DB プロバイダを介することで様々な DBMS への接続が可能となっている。
    OLE DB プロバイダとしては、以下のようなプロバイダがある。いくつかが OS 標準で付属している他、追加インストールが可能である。

    プロバイダ名 表示名 説明
    MSDASQL Microsoft OLE DB Provider for ODBC ODBC データベース
    Microsoft.Jet.OLEDB.4.0 Microsoft OLE DB Provider for Microsoft Jet Microsoft Jet データベース
    Microsoft.ACE.OLEDB.12.0 Microsoft Office 12.0 Access Database Engine OLE DB Provider Microsoft Access データベース
    SQLOLEDB Microsoft OLE DB Provider for SQL Server Microsoft SQL Server
    SQLNCLI10 SQL Server Native Client 10.0 Microsoft SQL Server
    MSDAORA Microsoft OLE DB Provider for Oracle Oracle データベース

    ソースコード(Perl + ADO + OLEDB + Jet データベース)

    use strict;
    use Win32::OLE;
     
    my $cn = Win32::OLE->new("ADODB.Connection");
    $cn->Open( "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=.\hello.mdb" );
    my $rs = $cn->Execute( "SELECT 'Hello, ADO World!' AS Message" );
     
    while ( !$rs->EOF ) {
        print $rs->Fields(0)->{Name}, "n";
        print "-------------------n";
        print $rs->Fields(0)->{Value}, "n";
       $rs->MoveNext();
    }
     
    $rs->Close();
    $cn->Close();

    ソースコード(Perl + ADO + OLEDB + ACE データベース)

    use strict;
    use Win32::OLE;
     
    my $cn = Win32::OLE->new("ADODB.Connection");
    $cn->Open( "PROVIDER=Microsoft.ACE.OLEDB.12.0;Data Source=.\hello.accdb" );
    my $rs = $cn->Execute( "SELECT 'Hello, ADO World!' AS Message" );
     
    while ( !$rs->EOF ) {
        print $rs->Fields(0)->{Name}, "n";
        print "-------------------n";
        print $rs->Fields(0)->{Value}, "n";
       $rs->MoveNext();
    }
     
    $rs->Close();
    $cn->Close();

    ソースコード(Perl + ADO + OLEDB + SQL Server)

    use strict;
    use Win32::OLE;
     
    my $cn = Win32::OLE->new("ADODB.Connection");
    $cn->Open( "PROVIDER=SQLOLEDB;SERVER=(local);DATABASE=master", "sa", "P@ssW0rd" );
    my $rs = $cn->Execute( "SELECT 'Hello, ADO World!' AS Message" );
     
    while ( !$rs->EOF ) {
        print $rs->Fields(0)->{Name}, "n";
        print "-------------------n";
        print $rs->Fields(0)->{Value}, "n";
       $rs->MoveNext();
    }
     
    $rs->Close();
    $cn->Close();

    ソースコード(Perl + ADO + OLEDB + Oracle)

    use strict;
    use Win32::OLE;
     
    my $cn = Win32::OLE->new("ADODB.Connection");
    $cn->Open( "PROVIDER=MSDAORA;Data Source=ORCL", "scott", "tiger" );
    my $rs = $cn->Execute( "SELECT 'Hello, ADO World!' AS Message FROM DUAL" );
     
    while ( !$rs->EOF ) {
        print $rs->Fields(0)->{Name}, "n";
        print "-------------------n";
        print $rs->Fields(0)->{Value}, "n";
       $rs->MoveNext();
    }
     
    $rs->Close();
    $cn->Close();

    実行方法(Windows)

    C:¥> perl hello.pl

    実行結果

    Message
    -----------------
    Hello, ADO World!
  6. Hello, ADO(JScript) World!

    Posted on 9月 16th, 2012 by cx20

    ADO(JScript)

    ADO(ActiveX Data Objects)は、マイクロソフト社が開発した COM ベースの DBMS 接続用 API である。
    OLE DB プロバイダを介することで様々な DBMS への接続が可能となっている。
    OLE DB プロバイダとしては、以下のようなプロバイダがある。いくつかが OS 標準で付属している他、追加インストールが可能である。

    プロバイダ名 表示名 説明
    MSDASQL Microsoft OLE DB Provider for ODBC ODBC データベース
    Microsoft.Jet.OLEDB.4.0 Microsoft OLE DB Provider for Microsoft Jet Microsoft Jet データベース
    Microsoft.ACE.OLEDB.12.0 Microsoft Office 12.0 Access Database Engine OLE DB Provider Microsoft Access データベース
    SQLOLEDB Microsoft OLE DB Provider for SQL Server Microsoft SQL Server
    SQLNCLI10 SQL Server Native Client 10.0 Microsoft SQL Server
    MSDAORA Microsoft OLE DB Provider for Oracle Oracle データベース

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

    main();
     
    function main() {
        var cn = new ActiveXObject("ADODB.Connection");
        cn.Open( "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=.\hello.mdb" );
        var rs = cn.Execute("SELECT 'Hello, ADO World!' AS Message");
     
        while ( !rs.EOF )
        {
            WScript.Echo( rs(0).Name );
            WScript.Echo( "-------------------" );
            WScript.Echo( rs(0).Value );
            rs.MoveNext();
        }
    }

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

    main();
     
    function main() {
        var cn = new ActiveXObject("ADODB.Connection");
        cn.Open( "PROVIDER=Microsoft.ACE.OLEDB.12.0;Data Source=.\hello.accdb" );
        var rs = cn.Execute("SELECT 'Hello, ADO World!' AS Message");
     
        while ( !rs.EOF )
        {
            WScript.Echo( rs(0).Name );
            WScript.Echo( "-------------------" );
            WScript.Echo( rs(0).Value );
            rs.MoveNext();
        }
     
        rs.Close();
        cn.Close();
    }

    ソースコード(JScript + ADO + OLEDB + SQL Server)

    main();
     
    function main() {
        var cn = new ActiveXObject("ADODB.Connection");
        cn.Open( "PROVIDER=SQLOLEDB;SERVER=(local);DATABASE=master", "sa", "P@ssW0rd" );
        var rs = cn.Execute("SELECT 'Hello, ADO World!' AS Message");
     
        while ( !rs.EOF )
        {
            WScript.Echo( rs(0).Name );
            WScript.Echo( "-------------------" );
            WScript.Echo( rs(0).Value );
            rs.MoveNext();
        }
    }

    ソースコード(JScript + ADO + OLEDB + Oracle)

    main();
     
    function main() {
        var cn = new ActiveXObject("ADODB.Connection");
        cn.Open( "PROVIDER=MSDAORA;Data Source=ORCL", "scott", "tiger" );
        var rs = cn.Execute("SELECT 'Hello, ADO World!' AS Message FROM DUAL");
     
        while ( !rs.EOF )
        {
            WScript.Echo( rs(0).Name );
            WScript.Echo( "-------------------" );
            WScript.Echo( rs(0).Value );
            rs.MoveNext();
        }
     
        rs.Close();
        cn.Close();
    }

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

    main();
     
    function main() {
        var cn = new ActiveXObject("ADODB.Connection");
        cn.Open( "PROVIDER=MSDASQL;Driver={SQL Server};SERVER=(local);DATABASE=master", "sa", "P@ssW0rd" );
        var rs = cn.Execute("SELECT 'Hello, ADO World!' AS Message");
     
        while ( !rs.EOF )
        {
            WScript.Echo( rs(0).Name );
            WScript.Echo( "-------------------" );
            WScript.Echo( rs(0).Value );
            rs.MoveNext();
        }
     
        rs.Close();
        cn.Close();
    }

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

    main();
     
    function main() {
        var cn = new ActiveXObject("ADODB.Connection");
        cn.Open( "PROVIDER=MSDASQL;Driver={Microsoft ODBC for Oracle};Server=ORCL", "scott", "tiger" );
        var rs = cn.Execute("SELECT 'Hello, ADO World!' AS Message FROM DUAL");
     
        while ( !rs.EOF )
        {
            WScript.Echo( rs(0).Name );
            WScript.Echo( "-------------------" );
            WScript.Echo( rs(0).Value );
            rs.MoveNext();
        }
     
        rs.Close();
        cn.Close();
    }

    ソースコード(JScript + ADO + ODBC + MySQL)

    main();
     
    function main() {
        var cn = new ActiveXObject("ADODB.Connection");
        cn.Open( "PROVIDER=MSDASQL;Driver={MySQL ODBC 5.1 Driver};Server=localhost", "root", "P@ssW0rd" );
        var rs = cn.Execute("SELECT 'Hello, ADO World!' AS Message");
     
        while ( !rs.EOF )
        {
            WScript.Echo( rs(0).Name );
            WScript.Echo( "-------------------" );
            WScript.Echo( rs(0).Value );
            rs.MoveNext();
        }
     
        rs.Close();
        cn.Close();
    }

    実行方法(Windows)

    C:¥> CScript //Nologo Hello.js

    実行結果

    Message
    -----------------
    Hello, ADO World!
  7. Hello, ADO(VBA) World!

    Posted on 9月 13th, 2012 by cx20

    ADO(VBA)

    ADO(ActiveX Data Objects)は、マイクロソフト社が開発した COM ベースの DBMS 接続用 API である。
    OLE DB プロバイダを介することで様々な DBMS への接続が可能となっている。
    OLE DB プロバイダとしては、以下のようなプロバイダがある。いくつかが OS 標準で付属している他、追加インストールが可能である。

    プロバイダ名 表示名 説明
    MSDASQL Microsoft OLE DB Provider for ODBC ODBC データベース
    Microsoft.Jet.OLEDB.4.0 Microsoft OLE DB Provider for Microsoft Jet Microsoft Jet データベース
    Microsoft.ACE.OLEDB.12.0 Microsoft Office 12.0 Access Database Engine OLE DB Provider Microsoft Access データベース
    SQLOLEDB Microsoft OLE DB Provider for SQL Server Microsoft SQL Server
    SQLNCLI10 SQL Server Native Client 10.0 Microsoft SQL Server
    MSDAORA Microsoft OLE DB Provider for Oracle Oracle データベース

    ソースコード(VBA + ADO + OLEDB + Jet データベース)

    Option Explicit
     
    Sub Main()
        Dim cn
        Dim rs
     
        Set cn = CreateObject("ADODB.Connection")
        cn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=.hello.mdb"
        Set rs = cn.Execute("SELECT 'Hello, ADO World!' AS Message")
     
        While Not rs.EOF
            Debug.Print rs(0).Name
            Debug.Print "-------------------"
            Debug.Print rs(0).Value
            rs.MoveNext
        Wend
     
        rs.Close
        cn.Close
    End Sub

    ソースコード(VBA + ADO + OLEDB + ACE データベース)

    Option Explicit
     
    Sub Main()
        Dim cn
        Dim rs
     
        Set cn = CreateObject("ADODB.Connection")
        cn.Open "PROVIDER=Microsoft.ACE.OLEDB.12.0;Data Source=.hello.accdb"
        Set rs = cn.Execute("SELECT 'Hello, ADO World!' AS Message")
     
        While Not rs.EOF
            Debug.Print rs(0).Name
            Debug.Print "-------------------"
            Debug.Print rs(0).Value
            rs.MoveNext
        Wend
     
        rs.Close
        cn.Close
    End Sub

    ソースコード(VBA + ADO + OLEDB + SQL Server)

    Option Explicit
     
    Sub Main()
        Dim cn
        Dim rs
     
        Set cn = CreateObject("ADODB.Connection")
        cn.Open "PROVIDER=SQLOLEDB;" & _
             "SERVER=(local);DATABASE=master;", _
             "sa", "P@ssW0rd"
        Set rs = cn.Execute("SELECT 'Hello, ADO World!' AS Message")
     
        While Not rs.EOF
            Debug.Print rs(0).Name
            Debug.Print "-------------------"
            Debug.Print rs(0).Value
            rs.MoveNext
        Wend
     
        rs.Close
        cn.Close
    End Sub

    ソースコード(VBA + ADO + OLEDB + Oracle)

    Option Explicit
     
    Sub Main()
        Dim cn
        Dim rs
     
        Set cn = CreateObject("ADODB.Connection")
        cn.Open "PROVIDER=MSDAORA;Data Source=ORCL", "scott", "tiger"
        Set rs = cn.Execute("SELECT 'Hello, ADO World!' AS Message FROM DUAL")
     
        While Not rs.EOF
            Debug.Print rs(0).Name
            Debug.Print "-------------------"
            Debug.Print rs(0).Value
            rs.MoveNext
        Wend
     
        rs.Close
        cn.Close
    End Sub

    ソースコード(VBA + ADO + ODBC + SQL Server)

    Option Explicit
     
    Sub Main()
        Dim cn
        Dim rs
     
        Set cn = CreateObject("ADODB.Connection")
        cn.Open "PROVIDER=MSDASQL;Driver={SQL Server};" & _
            "SERVER=(local);DATABASE=master;", _
            "sa", "P@ssW0rd"
        Set rs = cn.Execute("SELECT 'Hello, ADO World!' AS Message")
     
        While Not rs.EOF
            Debug.Print rs(0).Name
            Debug.Print "-------------------"
            Debug.Print rs(0).Value
            rs.MoveNext
        Wend
     
        rs.Close
        cn.Close
    End Sub

    ソースコード(VBA + ADO + ODBC + Oracle)

    Option Explicit
     
    Sub Main()
        Dim cn
        Dim rs
     
        Set cn = CreateObject("ADODB.Connection")
        cn.Open "PROVIDER=MSDASQL;Driver={Microsoft ODBC for Oracle};Server=ORCL", _
            "scott", "tiger"
        Set rs = cn.Execute("SELECT 'Hello, ADO World!' AS Message FROM DUAL")
     
        While Not rs.EOF
            Debug.Print rs(0).Name
            Debug.Print "-------------------"
            Debug.Print rs(0).Value
            rs.MoveNext
        Wend
     
        rs.Close
        cn.Close
    End Sub

    ソースコード(VBA + ADO + ODBC + MySQL)

    Option Explicit
     
    Sub Main()
        Dim cn
        Dim rs
     
        Set cn = CreateObject("ADODB.Connection")
        cn.Open "PROVIDER=MSDASQL;Driver={MySQL ODBC 5.1 Driver};Server=localhost", _
            "root", "P@ssW0rd"
        Set rs = cn.Execute("SELECT 'Hello, ADO World!' AS Message")
     
        While Not rs.EOF
            Debug.Print rs(0).Name
            Debug.Print "-------------------"
            Debug.Print rs(0).Value
            rs.MoveNext
        Wend
     
        rs.Close
        cn.Close
    End Sub

    実行結果

    Message
    -----------------
    Hello, ADO World!
  8. Hello, ADO(C++) World!

    Posted on 3月 29th, 2012 by cx20

    ADO(C++)

    ADO(ActiveX Data Objects)は、マイクロソフト社が開発した COM ベースの DBMS 接続用 API である。
    OLE DB プロバイダを介することで様々な DBMS への接続が可能となっている。
    OLE DB プロバイダとしては、以下のようなプロバイダがある。いくつかが OS 標準で付属している他、追加インストールが可能である。

    プロバイダ名 表示名 説明
    MSDASQL Microsoft OLE DB Provider for ODBC ODBC データベース
    Microsoft.Jet.OLEDB.4.0 Microsoft OLE DB Provider for Microsoft Jet Microsoft Jet データベース
    Microsoft.ACE.OLEDB.12.0 Microsoft Office 12.0 Access Database Engine OLE DB Provider Microsoft Access データベース
    SQLOLEDB Microsoft OLE DB Provider for SQL Server Microsoft SQL Server
    SQLNCLI10 SQL Server Native Client 10.0 Microsoft SQL Server
    MSDAORA Microsoft OLE DB Provider for Oracle Oracle データベース

    なお、Windows 7 SP1 より、ADO(msado15.dll)のインターフェイス ID(GUID)が変更されており、下位 OS との互換性がなくなっている。
    これを回避する為には、msado15.dll の代わりに互換性のあるタイプライブラリ msado60.tlb を参照する必要がある。

    ソースコード(VC + ADO + OLEDB + Jet データベース)

    #include <stdio.h>
    #include <tchar.h>
    #if (WINVER >= 0x0601) // Windows 7 以降
        #import "msado60.tlb" no_namespace rename("EOF", "adoEOF")
    #else
        #import "msado15.dll" no_namespace rename("EOF", "adoEOF")
    #endif
     
    int _tmain( int argc, TCHAR* argv[] )
    {
        CoInitialize(NULL);
     
        _ConnectionPtr  cn("ADODB.Connection");
        _RecordsetPtr   rs("ADODB.Recordset");
     
        cn->Open( _T("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Hello.mdb"), 
            _T(""), _T(""), adConnectUnspecified),
     
        rs = cn->Execute( _T("SELECT 'Hello, ADO(C++) World' AS Message"), NULL, adCmdText );
     
        while ( !rs->adoEOF )
        {
            _variant_t var = rs->Fields->GetItem( 0L )->Value;
            _tprintf( _T("%sn"), (LPCTSTR)(_bstr_t)var );
            rs->MoveNext();
        }
        rs->Close();
        cn->Close();
        rs = NULL;
        cn = NULL;
     
        CoUninitialize();
     
        return 0;
    }

    ソースコード(VC + ADO + OLEDB + ACE データベース)

    #include <stdio.h>
    #include <tchar.h>
    #if (WINVER >= 0x0601) // Windows 7 以降
        #import "msado60.tlb" no_namespace rename("EOF", "adoEOF")
    #else
        #import "msado15.dll" no_namespace rename("EOF", "adoEOF")
    #endif
     
    int _tmain( int argc, TCHAR* argv[] )
    {
        CoInitialize(NULL);
     
        _ConnectionPtr  cn("ADODB.Connection");
        _RecordsetPtr   rs("ADODB.Recordset");
     
        cn->Open( _T("Provider=Microsoft.ACE.OLEDB.12.0;Data Source=Hello.accdb"), 
            _T(""), _T(""), adConnectUnspecified),
     
        rs = cn->Execute( _T("SELECT 'Hello, ADO(C++) World' AS Message"), NULL, adCmdText );
     
        while ( !rs->adoEOF )
        {
            _variant_t var = rs->Fields->GetItem( 0L )->Value;
            _tprintf( _T("%sn"), (LPCTSTR)(_bstr_t)var );
            rs->MoveNext();
        }
        rs->Close();
        cn->Close();
        rs = NULL;
        cn = NULL;
     
        CoUninitialize();
     
        return 0;
    }

    ソースコード(VC + ADO + OLEDB + SQL Server)

    #include <stdio.h>
    #include <tchar.h>
    #if (WINVER >= 0x0601) // Windows 7 以降
        #import "msado60.tlb" no_namespace rename("EOF", "adoEOF")
    #else
        #import "msado15.dll" no_namespace rename("EOF", "adoEOF")
    #endif
     
    int _tmain( int argc, TCHAR* argv[] )
    {
        CoInitialize(NULL);
     
        _ConnectionPtr  cn("ADODB.Connection");
        _RecordsetPtr   rs("ADODB.Recordset");
     
        cn->Open( _T("PROVIDER=SQLOLEDB;SERVER=(local);DATABASE=master;"), 
            _T("sa"), _T("P@ssW0rd"), adConnectUnspecified),
     
        rs = cn->Execute( _T("SELECT 'Hello, ADO(C++) World' AS Message"), NULL, adCmdText );
     
        while ( !rs->adoEOF )
        {
            _variant_t var = rs->Fields->GetItem( 0L )->Value;
            _tprintf( _T("%sn"), (LPCTSTR)(_bstr_t)var );
            rs->MoveNext();
        }
        rs->Close();
        cn->Close();
        rs = NULL;
        cn = NULL;
     
        CoUninitialize();
     
        return 0;
    }

    ソースコード(VC + ADO + OLEDB + Oracle)

    #include <stdio.h>
    #include <tchar.h>
    #if (WINVER >= 0x0601) // Windows 7 以降
        #import "msado60.tlb" no_namespace rename("EOF", "adoEOF")
    #else
        #import "msado15.dll" no_namespace rename("EOF", "adoEOF")
    #endif
     
    int _tmain( int argc, TCHAR* argv[] )
    {
        CoInitialize(NULL);
     
        _ConnectionPtr  cn("ADODB.Connection");
        _RecordsetPtr   rs("ADODB.Recordset");
     
        cn->Open( _T("PROVIDER=MSDAORA;DBQ=ORCL;"), 
            _T("scott"), _T("tiger"), adConnectUnspecified),
     
        rs = cn->Execute( _T("SELECT 'Hello, ADO(C++) World' AS Message FROM DUAL"), NULL, adCmdText );
     
        while ( !rs->adoEOF )
        {
            _variant_t var = rs->Fields->GetItem( 0L )->Value;
            _tprintf( _T("%sn"), (LPCTSTR)(_bstr_t)var );
            rs->MoveNext();
        }
        rs->Close();
        cn->Close();
        rs = NULL;
        cn = NULL;
     
        CoUninitialize();
     
        return 0;
    }

    コンパイル方法

    C:¥> cl hello.cpp

    実行結果

    Hello, ADO(C++) World!
  9. Hello, ADO World!

    Posted on 3月 23rd, 2012 by cx20

    ADO

    ADO(ActiveX Data Objects)は、マイクロソフト社が開発した COM ベースの DBMS 接続用 API である。
    OLE DB プロバイダを介することで様々な DBMS への接続が可能となっている。
    OLE DB プロバイダとしては、以下のようなプロバイダがある。いくつかが OS 標準で付属している他、追加インストールが可能である。

    プロバイダ名 表示名 説明
    MSDASQL Microsoft OLE DB Provider for ODBC ODBC データベース
    Microsoft.Jet.OLEDB.4.0 Microsoft OLE DB Provider for Microsoft Jet Microsoft Jet データベース
    Microsoft.ACE.OLEDB.12.0 Microsoft Office 12.0 Access Database Engine OLE DB Provider Microsoft Access データベース
    SQLOLEDB Microsoft OLE DB Provider for SQL Server Microsoft SQL Server
    SQLNCLI10 SQL Server Native Client 10.0 Microsoft SQL Server
    MSDAORA Microsoft OLE DB Provider for Oracle Oracle データベース

    ソースコード(VBScript + ADO + OLEDB + Jet データベース)

    Option Explicit
     
    Call Main()
     
    Sub Main()
        Dim cn
        Dim rs
     
        Set cn = CreateObject("ADODB.Connection")
        cn.Open "PROVIDER=Microsoft.Jet.OLEDB.4.0;Data Source=.hello.mdb"
        Set rs = cn.Execute("SELECT 'Hello, ADO World!' AS Message")
     
        While Not rs.EOF
            WScript.Echo rs(0).Name
            WScript.Echo "-------------------"
            WScript.Echo rs(0).Value
            rs.MoveNext
        Wend
     
        rs.Close
        cn.Close
    End Sub

    ソースコード(VBScript + ADO + OLEDB + ACE データベース)

    Option Explicit
     
    Call Main()
     
    Sub Main()
        Dim cn
        Dim rs
     
        Set cn = CreateObject("ADODB.Connection")
        cn.Open "PROVIDER=Microsoft.ACE.OLEDB.12.0;Data Source=.hello.accdb"
        Set rs = cn.Execute("SELECT 'Hello, ADO World!' AS Message")
     
        While Not rs.EOF
            WScript.Echo rs(0).Name
            WScript.Echo "-------------------"
            WScript.Echo rs(0).Value
            rs.MoveNext
        Wend
    End Sub

    ソースコード(VBScript + ADO + OLEDB + SQL Server)

    Option Explicit
     
    Call Main()
     
    Sub Main()
        Dim cn
        Dim rs
     
        Set cn = CreateObject("ADODB.Connection")
        cn.Open "PROVIDER=SQLOLEDB;" & _
             "SERVER=(local);DATABASE=master;", _
             "sa", "P@ssW0rd"
        Set rs = cn.Execute("SELECT 'Hello, ADO World!' AS Message")
     
        While Not rs.EOF
            WScript.Echo rs(0).Name
            WScript.Echo "-------------------"
            WScript.Echo rs(0).Value
            rs.MoveNext
        Wend
     
        rs.Close
        cn.Close
    End Sub

    ソースコード(VBScript + ADO + OLEDB + Oracle)

    Option Explicit
     
    Call Main()
     
    Sub Main()
        Dim cn
        Dim rs
     
        Set cn = CreateObject("ADODB.Connection")
        cn.Open "PROVIDER=MSDAORA;Data Source=ORCL", "scott", "tiger"
        Set rs = cn.Execute("SELECT 'Hello, ADO World!' AS Message FROM DUAL")
     
        While Not rs.EOF
            WScript.Echo rs(0).Name
            WScript.Echo "-------------------"
            WScript.Echo rs(0).Value
            rs.MoveNext
        Wend
     
        rs.Close
        cn.Close
    End Sub

    ソースコード(VBScript + ADO + ODBC + SQL Server)

    Option Explicit
     
    Call Main()
     
    Sub Main()
        Dim cn
        Dim rs
     
        Set cn = CreateObject("ADODB.Connection")
        cn.Open "PROVIDER=MSDASQL;Driver={SQL Server};" & _
            "SERVER=(local);DATABASE=master;", _
            "sa", "P@ssW0rd"
        Set rs = cn.Execute("SELECT 'Hello, ADO World!' AS Message")
     
        While Not rs.EOF
            WScript.Echo rs(0).Name
            WScript.Echo "-------------------"
            WScript.Echo rs(0).Value
            rs.MoveNext
        Wend
     
        rs.Close
        cn.Close
    End Sub

    ソースコード(VBScript + ADO + ODBC + Oracle)

    Option Explicit
     
    Call Main()
     
    Sub Main()
        Dim cn
        Dim rs
     
        Set cn = CreateObject("ADODB.Connection")
        cn.Open "PROVIDER=MSDASQL;Driver={Microsoft ODBC for Oracle};Server=ORCL", _
            "scott", "tiger"
        Set rs = cn.Execute("SELECT 'Hello, ADO World!' AS Message FROM DUAL")
     
        While Not rs.EOF
            WScript.Echo rs(0).Name
            WScript.Echo "-------------------"
            WScript.Echo rs(0).Value
            rs.MoveNext
        Wend
     
        rs.Close
        cn.Close
    End Sub

    ソースコード(VBScript + ADO + ODBC + MySQL)

    Option Explicit
     
    Call Main()
     
    Sub Main()
        Dim cn
        Dim rs
     
        Set cn = CreateObject("ADODB.Connection")
        cn.Open "PROVIDER=MSDASQL;Driver={MySQL ODBC 5.1 Driver};Server=localhost", _
            "root", "P@ssW0rd"
        Set rs = cn.Execute("SELECT 'Hello, ADO World!' AS Message")
     
        While Not rs.EOF
            WScript.Echo rs(0).Name
            WScript.Echo "-------------------"
            WScript.Echo rs(0).Value
            rs.MoveNext
        Wend
     
        rs.Close
        cn.Close
    End Sub

    実行方法(Windows)

    C:¥> CScript //Nologo Hello.vbs

    実行結果

    Message
    -----------------
    Hello, ADO World!