この項では、Table Viewer コード・サンプルのコードを使用して SQL Anywhere .NET データ・プロバイダのいくつかの主要機能について説明します。Table Viewer プロジェクトは、SQL Anywhere サンプル・ディレクトリに格納されている SQL Anywhere サンプル・データベース demo.db を使用します。
SQL Anywhere サンプル・ディレクトリのロケーションについては、サンプル・ディレクトリを参照してください。
データベース内のテーブルとテーブル間の関係を含むサンプル・データベースの詳細については、SQL Anywhere サンプル・データベースを参照してください。
この項では、1 回に示すコードは数行です。サンプルのすべてのコードが含まれているわけではありません。コード全体を確認するには、samples-dir\SQLAnywhere\ADO.NET\TableViewer のサンプル・プロジェクトを開きます。
制御の宣言 次のコードは、label1 および label2 という名前の Label、txtConnectString という名前の TextBox、btnConnect という名前のボタン、txtSQLStatement という名前の TextBox、btnExecute という名前のボタン、dgResults という名前の DataGrid を宣言します。
private System.Windows.Forms.Label label1; private System.Windows.Forms.TextBox txtConnectString; private System.Windows.Forms.Label label2; private System.Windows.Forms.Button btnConnect; private System.Windows.Forms.TextBox txtSQLStatement; private System.Windows.Forms.Button btnExecute; private System.Windows.Forms.DataGrid dgResults; |
接続オブジェクトの宣言 SAConnection 型は、初期化されていない SQL Anywhere 接続オブジェクトを宣言するために使用されます。SAConnection オブジェクトは、SQL Anywhere データ・ソースへの固有接続を表すために使用されます。
private SAConnection _conn; |
SAConnection クラスの詳細については、SAConnection クラスを参照してください。
データベースへの接続 txtConnectString オブジェクトの Text プロパティのデフォルト値は "Data Source=SQL Anywhere 11 Demo" です。アプリケーション・ユーザは txtConnectString テキスト・ボックスに新しい値を入力することで、この値を上書きできます。このデフォルト値がどのように設定されているかは、TableViewer.cs で「Windows Form Designer Generated Code」という記述のあるリージョンまたはセクションを開くことで確認できます。このセクションでは、次のコード行を探します。
this.txtConnectString.Text = "Data Source=SQL Anywhere 11 Demo"; |
SAConnection オブジェクトは、この接続文字列を使用してデータベースに接続します。次のコードは、SAConnection コンストラクタを使用して接続文字列の設定された新しい接続オブジェクトを作成します。その後、Open メソッドを使用して接続を確立します。
_conn = new SAConnection( txtConnectString.Text ); _conn.Open(); |
SAConnection コンストラクタの詳細については、SAConnection メンバを参照してください。
クエリの定義 txtSQLStatement オブジェクトの Text プロパティのデフォルト値は "SELECT * FROM Employees" です。アプリケーション・ユーザは txtSQLStatement テキスト・ボックスに新しい値を入力することで、この値を上書きできます。
SQL 文は SACommand オブジェクトを使用して実行されます。次のコードは、SACommand コンストラクタを使用してコマンド・オブジェクトを宣言し、作成します。このコンストラクタは、実行されるクエリを表す文字列と、クエリが実行される接続を表す SAConnection オブジェクトを受け入れます。
SACommand cmd = new SACommand( txtSQLStatement.Text.Trim(), _conn ); |
SACommand オブジェクトの詳細については、SACommand クラスを参照してください。
結果の表示 クエリの結果は、SADataReader オブジェクトを使用して取得されます。次のコードは、ExecuteReader コンストラクタを使用して SADataReader オブジェクトを宣言し、作成します。このコンストラクタは、SACommand オブジェクトである cmd のメンバであり、事前に宣言されています。ExecuteReader はコマンド・テキストを実行するために接続に送信し、SADataReader を構築します。
SADataReader dr = cmd.ExecuteReader(); |
次のコードは、SADataReader オブジェクトを DataGrid オブジェクトに接続します。これにより結果カラムが画面に表示されるようになります。次に、SADataReader オブジェクトが閉じます。
dgResults.DataSource = dr; dr.Close(); |
SADataReader オブジェクトの詳細については、SADataReader クラスを参照してください。
エラー処理 アプリケーションがデータベースに接続しようとしたときや Tables コンボ・ボックスにデータを移植するときにエラーが発生した場合、次のコードは、エラーを取得し、そのメッセージを表示します。
try { _conn = new SAConnection( txtConnectString.Text ); _conn.Open(); SACommand cmd = new SACommand( "SELECT table_name FROM SYS.SYSTAB where creator = 101", _conn ); SADataReader dr = cmd.ExecuteReader(); comboBoxTables.Items.Clear(); while ( dr.Read() ) { comboBoxTables.Items.Add( dr.GetString( 0 ) ); } dr.Close(); } catch( SAException ex ) { MessageBox.Show( ex.Errors[0].Source + " : " + ex.Errors[0].Message + " (" + ex.Errors[0].NativeError.ToString() + ")", "Failed to connect" ); } |
SAException オブジェクトの詳細については、SAException クラスを参照してください。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |