このチュートリアルでは、Visual C# を使用して Microsoft .NET から Web サービスにアクセスする方法を示します。
コマンド・プロンプトで、次のコマンドを実行して、パーソナル Web サーバを起動します。samples-dir をサンプル・データベースの実際のロケーションと置き換えます。-xs http(port=80)
オプションは、HTTP 要求をポート 80 で受け入れるようにデータベース・サーバに指示します。すでにポート 80 で稼働している Web サーバがある場合は、このチュートリアルには 8080 などの別のポート番号を使用し、すべてのポート参照で
80 の代わりに 8080 を使用してください。
dbeng11 -xs http(port=80) samples-dir\demo.db |
Interactive SQL を起動します。DBA として SQL Anywhere サンプル・データベースに接続します。次の文を実行します。
Employees テーブルをリストする SOAP サービスを定義します。
CREATE SERVICE "SASoapTest/EmployeeList" TYPE 'SOAP' AUTHORIZATION OFF SECURE OFF USER DBA AS SELECT * FROM Employees; |
認証はオフになっているため、ユーザ名とパスワードを入力せずにだれでもこのサービスを利用できます。このコマンドは、ユーザが DBA の場合に実行できます。この方法は簡単ですが、安全性に優れていません。
SOAP サービスのプロキシとして機能し、WSDL ドキュメントを生成する DISH サービスを作成します。
CREATE SERVICE "SASoapTest_DNET" TYPE 'DISH' GROUP "SASoapTest" FORMAT 'DNET' AUTHORIZATION OFF SECURE OFF USER DBA; |
SOAP サービスと DISH サービスは、DNET フォーマットである必要があります。この例では、SOAP サービスの作成時に FORMAT 句が省略されています。その結果、SOAP サービスは DISH サービスから DNET フォーマットを継承します。
Microsoft Visual Studio を起動します。この例では、.NET Framework 2.0 の機能を使用しています。
Visual C# を使用して、新しい Windows アプリケーション・プロジェクトを作成します。
空のフォームが表示されます。
[プロジェクト] - [Web 参照の追加] を選択します。
[Web 参照の追加] ページの [URL] フィールドに、URL http://localhost:80/demo/SASoapTest_DNET を入力します。
[移動] をクリックします。
SASoapTest_DNET で使用可能なメソッドのリストが表示されます。この中に EmployeeList メソッドがあります。
[参照の追加] をクリックして完了します。
[ソリューション エクスプローラ] ウィンドウに新しい Web 参照が表示されます。
Visual Studio の [ツールボックス] から、次の図のようにリストボックスとボタンをフォームに追加します。
ボタンのテキストを Employee List に変更します。
Employee List をダブルクリックし、ボタン・クリック・イベントに次のコードを追加します。
int sqlCode; listBox1.Items.Clear(); localhost.SASoapTest_DNET proxy = new localhost.SASoapTest_DNET(); DataSet results = proxy.EmployeeList(out sqlCode); DataTableReader dr = results.CreateDataReader(); while (dr.Read()) { for (int i = 0; i < dr.FieldCount; i++) { string columnName = dr.GetName(i); try { string value = dr.GetString(i); listBox1.Items.Add(columnName + "=" + value); } catch ( InvalidCastException ) { listBox1.Items.Add(columnName + "=(null)"); } } listBox1.Items.Add(""); } dr.Close(); |
プログラムをビルドし、実行します。
リストボックスに、EmployeeList 結果セットが「カラム名=値」のペアで表示されます。
Employees テーブルの TerminationDate カラムにあるような NULL カラム値を処理するために、try/catch ブロックが含まれています。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |