SQL Anywhere .NET データ・プロバイダ を使用してSQL Anywhere データベースに接続する

SQL Anywhere .NET データ・プロバイダ を使用して、.NET アプリケーションを SQL Anywhere データベースに短時間で簡単に接続できます。このドキュメントでは、C# プロジェクトを使用して SQL Anywhere Studio データベースに接続する方法を説明します。

SQL Anywhere .NET データ・プロバイダ を使用して SQL Anywhere データベースに接続する

.・SQL Anywhere Studio 10.0.x
.・demo.db ファイル (SQL Anywhere に付属)
.・Microsoft Visual Studio .NET version 2003 または 2005
.・Microsoft ADO.NET
.・Windows XP/200x

手順

1. Visual Studio .NET を起動します。

2. 新規プロジェクトを作成します。
     ・ [ファイル] メニューから [新規作成] - [プロジェクト] を選択します。
       [新しいプロジェクト] ダイアログが表示されます。
     ・左側のペインで [Visual C#] を選択します。
     ・右側のペインで [コンソール アプリケーション] を選択します。
     ・[プロジェクト名] フィールドに EmployeeDataReader と入力します。
     ・ [場所] フィールドに c:\temp と入力します。
     ・ [OK] をクリックして、[新しいプロジェクト] ダイアログを閉じます。

     次のように表示されます。

3. System.Data 名前空間を設定します。これは、すべての ADO.NET クラスを配置する場所です。プロジェクトの最初のディレクティブのリストに次の using ディレクティブを追加します。

     Using System.Data;

4. SQL Anywhere .NET データ・プロバイダ アセンブリに参照を追加します。

     ・ [ソリューション エクスプローラ] ウィンドウで [参照設定] を右クリックし、ポップアップ・メニューから [参照の追加] を選択します。
       [参照の追加] ダイアログが表示されます。
     ・ .NET タブで、[参照] をクリックして iAnywhere.Data.SQL Anywhere.dll. を選択します。
       Windows と Windows CE のいずれでも、.NET 1.0 用と 2.0 用に個別にDLL があります。
     ・ 該当するアセンブリを選択して [開く] をクリックします。

     ソースは以下のようになります。

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

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

     これで、SQL Anywhere と C# アプリケーションの間の通信を確立するために必要なコードを記述できます。

5. SQL Anywhere .NET データ・プロバイダ 用の using ディレクティブをプロジェクトに追加します。

     Using iAnywhere.Data.SQLAnywhere;

6. 以下のコードを Main メソッドに追加します。

     //接続文字列の設定
     SAConnection myConnection = new SAConnection(
     ”Data Source=SQL Anywhere 10 Demo;UID=DBA;PWD=sql”);
     //接続をオープンする
     myConnection.Open();
     //コマンド・オブジェクトを作成する
     SACommand myCommand = myConnection.CreateCommand();
     //クエリを指定
     myCommand.CommandText = “Select Surname from Employees”;
     //DataReader を作成する
     SADataReader myDataReader = myCommand.ExecuteReader();
     //データを表示させる
     while (myDataReader.Read())
       {
        Console.WriteLine(“\t{0}”, myDataReader[“Surname”]);
       }
     myDataReader.Close();
     myConnection.Close();

7. [Ctrl+F5] を押してプロジェクトを実行します。

以下のリストが表示されます。

     Whitney
     Cobb
     Chin
     Jordan
     Breault
       :
       :
       :
     Lynch
     Hildebrand
     Nielsen
     Ahmed

     任意のキーを押して続行します。

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

1. SAConnection オブジェクトを使用します。

     SAConnection myConnection = new SAConnection(
       ”Data Source=SQL Anywhere 10 Demo;UID=DBA;PWD=sql”);

     この例は、ODBC データ・ソースを使用しています。これは、データベースへの接続に必須ではありません。

ADO.NET オブジェクトを使用するには、先に SAConnection オブジェクトを初期化する必要があります。このオブジェクトは、アプリケーションと SQL Anywhere .NET データベース・プロバイダ の間の接続を作成します。それ以外の接続文字列を引き渡す必要があります。
引き渡した接続文字列は、データ・ソースに含めることができます。データベース・サーバがすでに実行されている場合は、ユーザ ID とパスワードのみを引き渡します。接続文字列は次のようになります。

SAConnection myConnection = new SAConnection(
“UID=DBA;PWD=sql;ENG=server-that-is-already-started”);

DSN を使用していないときにアプリケーションでデータベースを開始する必要がある場合は、
接続文字列は次のようになります。

     SAConnection myConnection = new SAConnection
     (UID=DBA;PWD=sql;DBF=c:\temp\dbfile.db;eng=server-name”);

2. Connection オブジェクトを開きます。

     myConnection.Open()

     このメソッドは、.NET アプリケーションと .NET データ・プロバイダ の間の接続を開くために必要です。

3. SQL コマンドを実行します。

     SACommand myCommand = myConnection.CreateCommand();

     //クエリを指定します
     myCommand.CommandText = “SELECT Surname FROM Employees”;

接続を開いた後は、SQL 文を実行できます。まず、データベース操作を実行するためのコマンド・オブジェクトを作成する必要があります。コマンド・オブジェクトの作成後は、CommandText プロパティを設定する必要があります。社員の名字をフェッチする必要があるため、コマンド・オブジェクトの CommandText プロパティに SQL 文を設定します。

4. DataReader を使用します。

     SADataReader myDataReader = myCommand.ExecuteReader();

     この例では、DataReader オブジェクトを使用して、クエリの結果を短時間で取得します。
     DataReader は、読み取り専用オブジェクトです。データを更新することはできません。

     以下のコードは、データを表示します。

     while ( myDataReader.Read())
     {
          Console.WriteLine(“\t{0}”, myDataReader [“Surname”]);
     }

DataReader の read メソッドは、一度に 1 つのローを読み取ります。このメソッドは、読み取るデータがある限り true を返します。読み取るデータがなくなると、false を返します。

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

     最後に、DataReader および Connection のオブジェクトを閉じます。

 

SAP SAP SQLAnywhere製品ページはこちら