ADO.NET および SQL Anywhere .NET Data Provider を使用した SQL Anywhere データベースへの接続

 
 
このマニュアルでは、iAnywhere の SQL Anywhere .NET Data Provider を使用して C# プロジェクトから SQL Anywhere データベースへの接続を作成する方法について説明します。


はじめに

SQL Anywhere .NET Data Provider を使用することにより、マネージド .NET アプリケーションは SQL Anywhere データベースへの統合かつ標準化されたアクセスを得ることができます。データベースへの ADO.NET 接続を確立する場合は、この方法をおすすめします。


必要なソフトウェア
  • SQL Anywhere Studio 11.x
  • SQL Anywhere ........... (demo.db)
  • Microsoft Visual Studio 2008


手順

  1. Visual Studio 2008 を起動します。
  2. 新規プロジェクトを作成します。
    a. [ファイル]メニューから [新しいプロジェクト] を選択します。[新しいプロジェクト] ダイアログが表示されます。

    b. 左ペインで [Visual C#] を選択します。

    c. 右ペインで [コンソール アプリケーション] を選択します。

    d. [プロジェクト名] フィールドに EmployeeDataReader と入力します。

    e. [場所] フィールドに c:\temp と入力します。

    f. [OK]をクリックして [新しいプロジェクト] ダイアログを閉じます。

    g. しばらくすると、以下のコード・スタブを使用してプロジェクトが作成されます。




    h. 参照を SQL Anywhere .NET Data Provider アセンブリに追加します。i. [ソリューション エクスプローラ] ウィンドウで [参照設定] を右クリックし、ポップアップ・メニューから [参照の追加] を選択します。

         i. [参照の追加] ダイアログが表示されます。
         ii. [.NET]タブで [参照] をクリックし、iAnywhere.Data.SQL Anywhere.dll を検索します。
         Windows および Windows CE では、.NET 1.0 と 2.0 に対して異なるバージョンの
         DLL があるので注意してください。
         iii. 適切なアセンブリを選択して [開く] をクリックします。

    i. 以下の using 指令をプロジェクトの先頭に追加して、System.Data および iAnywhere.Data.SQLAnywhere ネームスペースを設定します。これらのネームスペースには、データベース接続に必要な ADO.NET クラスがすべて含まれます。

    コード・ファイルは以下のようになります。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Data;
    using iAnywhere.Data.SQLAnywhere;

    namespace CustomerDataReader
    {
         class Program
         {
            static void Main(string[] args)
            {
            }
         }
    }

    j. 以下のコードを static void Main(string[] args) メソッドにコピーします。

    //Create a connection.
    SAConnection myConnection = new SAConnection("Data Source=SQL Anywhere
    11 Demo;UID=DBA;PWD=sql");
    //open the connection
    myConnection.Open();
    //Create a command object.
    SACommand myCommand = myConnection.CreateCommand();
    //Specify a query. myCommand.CommandText = "SELECT Surname FROM Employeess";
    //Create a DataReader for the command
    SADataReader myDataReader = myCommand.ExecuteReader();

    //Display the resulting data.
    while ( myDataReader.Read())
    {
       Console.WriteLine("{0}", myDataReader["Surname"]);
    }
    //Close the DataReader.
    myDataReader.Close();
    //Close the connection.
    myConnection.Close ();

    //Keep the console open until a keystroke
    Console.ReadKey (true);


    k. [F5] を押してプロジェクトを実行します。以下のような名前のリストが表示されます。
              Whitney
              Cobb
              Chin
              Jordan
              ...

    l. 任意のキーを押して、コンソール・ウィンドウを閉じます。


アプリケーションの仕組み

SAConnection オブジェクトの作成

SAConnection オブジェクトは、他の ADO.NET オブジェクトを使用する前に初期化する必要があります。SAConnection オブジェクトは、アプリケーションと SQL Anywhere .NET Provider 間の接続を作成します。この例では、ODBC データ・ソースを使用します。ODBC データ・ソースは、データベースに接続するための要件ではありません。ユーザは、残りの接続文字列を渡す必要があり、この接続文字列はデータ・ソースに含めることができます。データベース・サーバがすでに動作している場合は、ユーザ ID とパスワードを渡すだけで構いません。接続文字列は以下のようになります。

SAConnection myConnection = new SAConnection(@"UID=DBA;PWD=sql;ENG=MyDbEng");

DSN を使わずにデータベース・サーバを実行する際にアプリケーションからデータベース・サーバを起動する必要がある場合、接続文字列は以下のようになります。

SAConnection myConnection = new
SAConnection(@"UID=DBA;PWD=sql;DBF=C:\MyDB.db");

'@' 記号を接続文字列の前に置くと、ファイル名にバックスラッシュを使用することができます。そうしない場合は、C# 文字列内のバックスラッシュ文字をエスケープするために二重のバックスラッシュが必要になります。


SAConnection オブジェクトを開く

.NET アプリケーションとプロバイダ間の接続を開くには、このメソッドが必要です。このメソッドが失敗した場合は、例外(iAnywhere.Data.SQLAnywhere.SAException)がスローされます。

myConnection.Open()


クエリ文の指定

接続が正常に開いたら、SQL 文を発行できます。まず、データベース操作を実行するために Command オブジェクトを作成する必要があります。Command オブジェクトを作成したら、CommandText プロパティを設定してください。顧客の特定の名前と姓をフェッチするために、その SQL 文を Command オブジェクトの CommandText プロパティに渡します。

SACommand myCommand = myConnection.CreateCommand();
myCommand.CommandText = "SELECT GivenName, Surname FROM Customers";


データの読み取り

この例では、DataReader オブジェクトを使用してクエリの結果をすぐに取得します。これは、読み取り専用のオブジェクトですので、データを更新することはできません。DataReader の Read メソッドは、ローを 1 つずつ読み取り、読み取るデータがある間は true を返し、読み取るデータがなくなったら false を返します。

while ( myDataReader.Read())
{
     Console.WriteLine("{0}", myDataReader["SurName"]);
}


クリーンアップ

最後に、DataReader オブジェクトと Connection オブジェクトを閉じます。

myDataReader.Close();
myConnection.Close();







BACK : 技術情報(TechDoc)のトップページ
 
このウインドウを閉じる
 
Copyright 2010 iAnywhere Solutions K.K.