Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (日本語) » SQL Anywhere サーバ - プログラミング » SQL Anywhere データ・アクセス API » SQL Anywhere Web サービス

 

チュートリアル:Microsoft .NET からの Web サービスへのアクセス

このチュートリアルでは、Visual C# を使用して Microsoft .NET から Web サービスにアクセスする方法を示します。

♦  SOAP および DISH サービスを作成するには、次の手順に従います。
  1. コマンド・プロンプトで、次のコマンドを実行して、パーソナル Web サーバを起動します。samples-dir をサンプル・データベースの実際のロケーションと置き換えます。-xs http(port=80) オプションは、HTTP 要求をポート 80 で受け入れるようにデータベース・サーバに指示します。すでにポート 80 で稼働している Web サーバがある場合は、このチュートリアルには 8080 などの別のポート番号を使用し、すべてのポート参照で 80 の代わりに 8080 を使用してください。

    dbeng11 -xs http(port=80) samples-dir\demo.db
  2. Interactive SQL を起動します。DBA として SQL Anywhere サンプル・データベースに接続します。次の文を実行します。

    1. Employees テーブルをリストする SOAP サービスを定義します。

      CREATE SERVICE "SASoapTest/EmployeeList"
      TYPE 'SOAP'
      AUTHORIZATION OFF
      SECURE OFF
      USER DBA
      AS SELECT * FROM Employees;

      認証はオフになっているため、ユーザ名とパスワードを入力せずにだれでもこのサービスを利用できます。このコマンドは、ユーザが DBA の場合に実行できます。この方法は簡単ですが、安全性に優れていません。

    2. 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 フォーマットを継承します。

  3. Microsoft Visual Studio を起動します。この例では、.NET Framework 2.0 の機能を使用しています。

    1. Visual C# を使用して、新しい Windows アプリケーション・プロジェクトを作成します。

      空のフォームが表示されます。

    2. [プロジェクト] - [Web 参照の追加] を選択します。

    3. [Web 参照の追加] ページの [URL] フィールドに、URL http://localhost:80/demo/SASoapTest_DNET を入力します。

    4. [移動] をクリックします。

      SASoapTest_DNET で使用可能なメソッドのリストが表示されます。この中に EmployeeList メソッドがあります。

    5. [参照の追加] をクリックして完了します。

      [ソリューション エクスプローラ] ウィンドウに新しい Web 参照が表示されます。

    6. Visual Studio の [ツールボックス] から、次の図のようにリストボックスとボタンをフォームに追加します。

      デモ用の SOAP フォーム。
    7. ボタンのテキストを Employee List に変更します。

    8. 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();
    9. プログラムをビルドし、実行します。

      リストボックスに、EmployeeList 結果セットが「カラム名=値」のペアで表示されます。

      Employees テーブルの TerminationDate カラムにあるような NULL カラム値を処理するために、try/catch ブロックが含まれています。