| このマニュアルでは、Microsoft の OLE DB.NET Data Provider を使用して C#
            プロジェクトから SQL Anywhere データベースへの接続を作成する方法について説明します。 
 
 はじめに
 
 Microsoft OLE DB.NET Data Provider を SQL Anywhere Native OLE DB Provider
            とともに使用することにより、マネージド .NET アプリケーションは SQL Anywhere
            データベースへの標準化されたアクセスを得ることができます。あるいは、よりパフォーマンスの高い統合ソリューションとして
            SQL Anywhere .NET Data Provider の使用を検討することもできます。
 
 
 必要なソフトウェア
 
 
            SQL Anywhere 11.x
SQL Anywhere サンプル・データベース (demo.db)
Microsoft Visual Studio 2008
 
 手順
 
 
1. Visual Studio 2008 を起動します。
2. 新規プロジェクトを作成します。
 
a. [ファイル] メニューから [新規作成] > [プロジェクト] を選択します。 [新しいプロジェクト] ダイアログが表示されます。
 b. 左ペインで [Visual C#] を選択します。
 
 c. 右ペインで [コンソール アプリケーション] を選択します。
 
 d. [名前] フィールドに CustomerDataReader と入力します。
 
 e. [場所] フィールドに c:\temp と入力します。
 
 f. [OK] をクリックして [新しいプロジェクト] ダイアログを閉じます。
 
 
 
  
 h. 以下の using 指令をコード・ファイルの一番上にあるリストに追加します。System.Data.OleDB ネームスペースには、データベース接続に必要な ADO.NET クラスがすべて含まれています。コード・ファイルは以下のようになります。
 
 
            using System; using System.Collections.Generic;
 using System.Linq;
 using System.Text;
 using System.Data;
 using System.Data.OleDB;
 
 namespace CustomerDataReader
 {
 class Program
 {
 static void Main(string[] args)
 {
 }
 }
 }
 
 i. 以下のコードを static void Main(string[] args) メソッドにコピーします。
 
 
 
            //Create a connection OleDbConnection myConnection = new OleDbConnection(
 @"Data Source=SQL Anywhere 11 Demo;Provider=SAOLEDB.11");
 //open
            the connection
 myConnection.Open();
 //Create a command object.
 OleDbCommand
            myCommand = myConnection.CreateCommand();
 //Specify a query
 myCommand.CommandText
            = "Select GivenName, Surname FROM
 Customers"
 //Create a DataReader
            for the command
 OleDbDataReader myDataReader = myCommand.ExecuteReader();
 //Display the resulting Data
 while (myDataReader.Read())
 {
 Console.WriteLine("{0} {1}",
 myDataReader["GivenName"] myDataReader["Surname"]);
 }
 
 //Close the DataReader.
 myDataReader.Close();
 //Close the connection myConnection.Close();
 
 //Keep the console open until a keystroke.
 Console.ReadKey(true);
 
 
 j. [F5] を押してプロジェクトを実行します。以下のような名前のリストが表示されます。
 
 
 
            Michaels Devlin Beth Reiser
 Erin Niedringhaus
 Meghan Mason
 Laura McCarthy
 Paul Phillips
 Kelly Colburn
 ....
 
 
 k. 任意のキーを押して、コンソール・ウィンドウを閉じます。
 
 
 
 アプリケーションの仕組み
 
 
 OleDbConnection オブジェクトの作成
 
 OleDbConnection オブジェクトは、他の ADO.NET オブジェクトを使用する前に初期化する必要があります。OleDbConnection
            オブジェクトは、アプリケーションとデータベース・プロバイダ (この場合は
            SAOLEDB.11) 間の接続を作成します。ユーザは残りの接続文字列を渡す必要があり、この接続文字列はデータ・ソースに含めることができます。データベース・サーバがすでに動作している場合は、ユーザ
            ID とパスワードを渡すだけで構いません。接続文字列は以下のようになります。
 
 
            OleDbConnection myConnection = new DSN を使わずにデータベース・サーバを実行する際にアプリケーションからデータベース・サーバを起動する必要がある場合、接続文字列は以下のようになります。OleDbConnection (@"Provider=SAOLEDB.11;UID=DBA;PWD=sql");
 
 
 
            OLEDbConnection myConnection = new '@' 記号を接続文字列の前に置くと、ファイル名にバックスラッシュを使用することができます。そうしない場合は、C# 文字列内のバックスラッシュ文字をエスケープするために二重のバックスラッシュが必要になります。OleDbConnection
 (@"Provider=SAOLEDB.11;UID=dba;PWD=sql;DBF=C:\MyDB.db");
 
 
 
 Connection オブジェクトを開く
 
 .NET アプリケーションとプロバイダ間の接続を開くには、このメソッドが必要です。このメソッドが失敗した場合は、例外がスローされます
 
            (System.Data.OleDb.OleDbException) myConnection.Open();
 
 クエリ文の指定
 
 接続が正常に開いたら、SQL 文を発行できます。まず、データベース操作を実行するために
            Command オブジェクトを作成する必要があります。Command オブジェクトを作成したら、CommandText
            プロパティを設定してください。顧客の特定の名前と姓をフェッチするために、その
            SQL 文を Command オブジェクトの CommandText プロパティに渡します。
 
 
            OleDbCommand myCommand = myConnection.CreateCommand(); myCommand.CommandText
            = "SELECT GivenName, Surname FROM
 Customers";
 
 
 データの読み取り
 
 この例では、DataReader オブジェクトを使用してクエリの結果をすぐに取得します。これは、読み取り専用のオブジェクトですので、データを更新することはできません。DataReader
            の Read メソッドは、ローを 1 つずつ読み取り、読み取るデータがある間は true
            を返し、読み取るデータがなくなったら false を返します。
 
 
            while ( myDataReader.Read()) {
 Console.WriteLine("{0} {1}",
 myDataReader["GivenName"],
            myDataReader["Surname"]);
 }
 
 
 クリーンアップ
 
 最後に、DataReader オブジェクトと Connection オブジェクトを閉じます。
 
 
            myDataReader.Close(); myConnection.Close();
 
 
 
 |