Archive for the ‘IronScheme’ Category

  1. Hello, Connector/NET(IronScheme) World!

    Posted on 4月 14th, 2013 by cx20

    Connector/NET(IronScheme)

    Connector/NET は、.NET ベースの MySQL 接続用 API である。
    以下は IronScheme による Connector/NET ライブラリを使用した MySQL への接続例となっている。

    ソースコード(IronRuby + Connector/NET + MySQL)

    (import
        (rnrs)
        (ironscheme clr)
    )
     
    (clr-reference System)
    (clr-reference System.Data)
    (clr-reference MySql.Data)
     
    (clr-using System)
    (clr-using MySql.Data.MySqlClient)
     
    (begin
        (define conStr "server=localhost;user id=root;password=P@ssW0rd")
        (define sqlStr "SELECT 'Hello, Connector/NET World!' AS Message")
        (define con (clr-new MySqlConnection conStr))
        (define cmd (clr-new MySqlCommand sqlStr con))
        (clr-call MySqlConnection Open con)
        (define reader (clr-call MySqlCommand ExecuteReader cmd))
        (if (clr-call MySqlDataReader Read reader)
            (begin
                (clr-static-call System.Console WriteLine (clr-call MySqlDataReader GetName reader 0))
                (clr-static-call System.Console WriteLine "---------------------")
                (clr-static-call System.Console WriteLine (clr-call MySqlDataReader GetValue reader 0))
            )
        )
        (clr-call MySqlDataReader Close reader)
        (clr-call MySqlConnection Close con)
    )

    実行方法

    C:¥> isc Hello.ss

    実行結果

    MESSAGE
    ---------------------
    Hello, Connector/NET World!
  2. Hello, ODP.NET(IronScheme) World!

    Posted on 2月 16th, 2013 by cx20

    ODP.NET(IronScheme)

    ODP.NET(Oracle Data Provider for .NET)は、.NET ベースの Oracle Database 接続用 API である。ODAC(Oracle Data Access Component)と呼ばれるパッケージに含まれる。
    .NET 環境での Oracle Database 用データプロバイダとしては、マイクロソフト社が提供する「Microsoft Oracle Client」とオラクル社が提供する「ODP.NET」があるが、現在、「Microsoft Oracle Client」はマイクロソフト社自身が非推奨としており、今後は ODP.NET の使用が推奨されている。

    データプロバイダ 説明
    System.Data.OracleClient .NET Framework Data Provider for Oracle
    Oracle.DataAccess.Client Oracle Data Provider for .NET

    ソースコード(IronScheme + ODP.NET + Oracle)

    (import
        (rnrs)
        (ironscheme clr)
    )
     
    (clr-reference System)
    (clr-reference System.Data)
    (clr-reference Oracle.DataAccess)
     
    (clr-using System)
    (clr-using Oracle.DataAccess.Client)
     
    (begin
        (define conStr "Data Source=ORCL;User ID=scott;Password=tiger;")
        (define sqlStr "SELECT 'Hello, ODP.NET World!' AS Message FROM DUAL")
        (define con (clr-new OracleConnection conStr))
        (define cmd (clr-new OracleCommand sqlStr con))
        (clr-call OracleConnection Open con)
        (define reader (clr-call OracleCommand ExecuteReader cmd))
        (if (clr-call OracleDataReader Read reader)
            (begin
                (clr-static-call System.Console WriteLine (clr-call OracleDataReader GetName reader 0))
                (clr-static-call System.Console WriteLine "---------------------")
                (clr-static-call System.Console WriteLine (clr-call OracleDataReader GetValue reader 0))
            )
        )
        (clr-call OracleDataReader Close reader)
        (clr-call OracleConnection Close con)
    )

    コンパイル方法

    C:¥> isc Hello.ss

    実行結果

    MESSAGE
    ---------------------
    Hello, ODP.NET World!
  3. Hello, ADO.NET(IronScheme) World!

    Posted on 2月 15th, 2013 by cx20

    ADO.NET(IronScheme)

    ADO.NET(ActiveX Data Objects .NET)は、ADO の後継で .NET ベースの DBMS 接続用 API である。
    .NET データプロバイダを介することで様々な DBMS への接続が可能となっている。
    .NET Framework 標準で使用できる .NET データプロバイダとしては、以下のようなプロバイダがある。

    データプロバイダ名 説明
    System.Data.SqlClient Microsoft SQL Server
    System.Data.OleDb OLE DB
    System.Data.Odbc ODBC
    System.Data.OracleClient Oracle

    ソースコード(IronScheme + ADO.NET + OLE DB + Jet データベース)

    (import
        (rnrs)
        (ironscheme clr)
    )
     
    (clr-reference System)
    (clr-reference System.Data)
     
    (clr-using System)
    (clr-using System.Data.OleDb)
     
    (begin
        (define conStr "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=hello.mdb")
        (define sqlStr "SELECT 'Hello, ADO.NET World!' AS Message")
        (define con (clr-new OleDbConnection conStr))
        (define cmd (clr-new OleDbCommand sqlStr con))
        (clr-call OleDbConnection Open con)
        (define reader (clr-call OleDbCommand ExecuteReader cmd))
        (if (clr-call OleDbDataReader Read reader)
            (begin
                (clr-static-call System.Console WriteLine (clr-call OleDbDataReader GetName reader 0))
                (clr-static-call System.Console WriteLine "---------------------")
                (clr-static-call System.Console WriteLine (clr-call OleDbDataReader GetValue reader 0))
            )
        )
        (clr-call OleDbDataReader Close reader)
        (clr-call OleDbConnection Close con)
    )

    ソースコード(IronScheme + ADO.NET + OLE DB + ACE データベース)

    (import
        (rnrs)
        (ironscheme clr)
    )
     
    (clr-reference System)
    (clr-reference System.Data)
     
    (clr-using System)
    (clr-using System.Data.OleDb)
     
    (begin
        (define conStr "Provider=Microsoft.ACE.OLEDB.12.0;Data Source=hello.accdb")
        (define sqlStr "SELECT 'Hello, ADO.NET World!' AS Message")
        (define con (clr-new OleDbConnection conStr))
        (define cmd (clr-new OleDbCommand sqlStr con))
        (clr-call OleDbConnection Open con)
        (define reader (clr-call OleDbCommand ExecuteReader cmd))
        (if (clr-call OleDbDataReader Read reader)
            (begin
                (clr-static-call System.Console WriteLine (clr-call OleDbDataReader GetName reader 0))
                (clr-static-call System.Console WriteLine "---------------------")
                (clr-static-call System.Console WriteLine (clr-call OleDbDataReader GetValue reader 0))
            )
        )
        (clr-call OleDbDataReader Close reader)
        (clr-call OleDbConnection Close con)
    )

    ソースコード(IronScheme + ADO.NET + SQL Server)

    (import
        (rnrs)
        (ironscheme clr)
    )
     
    (clr-reference System)
    (clr-reference System.Data)
     
    (clr-using System)
    (clr-using System.Data.SqlClient)
     
    (begin
        (define conStr "SERVER=(local);DATABASE=master;UID=sa;PWD=P@ssW0rd;")
        (define sqlStr "SELECT 'Hello, ADO.NET World!' AS Message")
        (define con (clr-new SqlConnection conStr))
        (define cmd (clr-new SqlCommand sqlStr con))
        (clr-call SqlConnection Open con)
        (define reader (clr-call SqlCommand ExecuteReader cmd))
        (if (clr-call SqlDataReader Read reader)
            (begin
                (clr-static-call System.Console WriteLine (clr-call SqlDataReader GetName reader 0))
                (clr-static-call System.Console WriteLine "---------------------")
                (clr-static-call System.Console WriteLine (clr-call SqlDataReader GetValue reader 0))
            )
        )
        (clr-call SqlDataReader Close reader)
        (clr-call SqlConnection Close con)
    )

    ソースコード(IronScheme + ADO.NET + Oracle)

    (import
        (rnrs)
        (ironscheme clr)
    )
     
    (clr-reference System)
    (clr-reference System.Data)
     
    (clr-using System)
    (clr-using System.Data.OracleClient)
     
    (begin
        (define conStr "Data Source=ORCL;User ID=scott;Password=tiger;")
        (define sqlStr "SELECT 'Hello, ADO.NET World!' AS Message FROM DUAL")
        (define con (clr-new OracleConnection conStr))
        (define cmd (clr-new OracleCommand sqlStr con))
        (clr-call OracleConnection Open con)
        (define reader (clr-call OracleCommand ExecuteReader cmd))
        (if (clr-call OracleDataReader Read reader)
            (begin
                (clr-static-call System.Console WriteLine (clr-call OracleDataReader GetName reader 0))
                (clr-static-call System.Console WriteLine "---------------------")
                (clr-static-call System.Console WriteLine (clr-call OracleDataReader GetValue reader 0))
            )
        )
        (clr-call OracleDataReader Close reader)
        (clr-call OracleConnection Close con)
    )

    ソースコード(IronScheme + ADO.NET + ODBC + MySQL)

    (import
        (rnrs)
        (ironscheme clr)
    )
     
    (clr-reference System)
    (clr-reference System.Data)
     
    (clr-using System)
    (clr-using System.Data.Odbc)
     
    (begin
        (define conStr "Driver={MySQL ODBC 5.1 Driver};Server=localhost;UID=root;PWD=P@ssW0rd")
        (define sqlStr "SELECT 'Hello, ADO.NET World!' AS MessageL")
        (define con (clr-new OdbcConnection conStr))
        (define cmd (clr-new OdbcCommand sqlStr con))
        (clr-call OdbcConnection Open con)
        (define reader (clr-call OdbcCommand ExecuteReader cmd))
        (if (clr-call OdbcDataReader Read reader)
            (begin
                (clr-static-call System.Console WriteLine (clr-call OdbcDataReader GetName reader 0))
                (clr-static-call System.Console WriteLine "---------------------")
                (clr-static-call System.Console WriteLine (clr-call OdbcDataReader GetValue reader 0))
            )
        )
        (clr-call OdbcDataReader Close reader)
        (clr-call OdbcConnection Close con)
    )

    実行方法

    C:¥> isc Hello.ss

    実行結果

    Message
    ---------------------
    Hello, ADO.NET World!
  4. Hello, Win32 API(IronScheme) World!

    Posted on 6月 20th, 2012 by cx20

    Win32 API(IronScheme)

    Win32 API は、Windows の機能にアクセスする為の API(Application Programming Interface)である。
    以下は IronScheme による Win32 API 呼出し例となっている。

    ソースコード

    (import
        (rnrs)
        (ironscheme clr)
    )
     
    (define msgbox (pinvoke-call user32 MessageBox int (intptr string string int)))
    (msgbox 0 "Hello, Win32 API(IronScheme) World!" "Hello, World!" 0 )

    実行方法

    C:¥> isc hello.ss

    実行結果

    ---------------------------
    Hello, World!
    ---------------------------
    Hello, Win32 API(IronScheme) World!
    ---------------------------
    OK   
    ---------------------------
  5. Hello, Windows Forms(IronScheme) World!

    Posted on 6月 10th, 2012 by cx20

    Windows Forms(IronScheme)

    Windows フォーム(Windows Forms)は .NET Framework におけるユーザーインターフェイス基盤である。Windows アプリケーションにおけるウィンドウやダイアログに対応する。
    以下は IronScheme における Windows フォーム の例となっている。

    ソースコード

    (import
        (rnrs)
        (ironscheme clr)
    )
     
    (clr-reference System.Windows.Forms)
    (clr-reference System.Drawing)
     
    (clr-using System.Windows.Forms)
    (clr-using System.Drawing)
     
    (begin
        (define form (clr-new Form))
        (clr-prop-set! Form Size form (clr-new Size 640 480))
        (clr-prop-set! Form Text form "Hello, World!")
        (define label1 (clr-new Label))
        (clr-prop-set! Label Size label1 (clr-new Size 320 20))
        (clr-prop-set! Label Text label1 "Hello, Windows Forms(IronScheme) World!")
        (define formControls (clr-prop-get Form Controls form ))
        (clr-call Form+ControlCollection Add formControls label1 )
     
        (clr-static-call Application (Run Form) form)
    )

    実行方法

    C:¥> isc Hello.ss

    実行結果

    +------------------------------------------+
    |Hello, World!                    [_][~][X]|
    +------------------------------------------+
    |Hello, Windows Forms(IronScheme) World!   |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    |                                          |
    +------------------------------------------+
  6. Hello, IronScheme World!

    Posted on 1月 22nd, 2012 by cx20

    IronScheme

    IronScheme は関数型言語 Scheme の .NET 実装である。開発当初は IronLisp として開発されていた。
    Scheme の構文が使える他、.NET Framework のライブラリが利用できる。

    ソースコード

    (import (rnrs))
    (display "Hello, IronScheme World!" )

    ソースコード(.NET ライブラリを使用した場合)

    (import
      (rnrs)
      (ironscheme clr))
    (clr-static-call System.Console WriteLine "Hello, IronScheme World!" )

    実行方法(スクリプトファイルを指定して実行)

    $ isc hello.ss

    実行結果

    Hello, IronScheme World!