SQL Anywhere データベースから Web サービスを呼び出す方法

この技術ドキュメントでは、ストアド・プロシージャを使用して、SQL Anywhere データベースから Web サービスを呼び出す方法について説明します。

SQL Anywhere は、ストアド・プロシージャを使用して Web サービスまたは SOAP を呼び出します。
Vista 環境では、ユーザ・データは Users プロファイル以下にインストールします。

必要なソフトウェア

1. SQL Anywhere 9.0.x または、それ以降
2. Web サービス・ファンクション
3. IIS または Web サービスをホストする任意のWeb サーバー
4. C#
5. Visual Studio 2005
6. .NET 2.0

目標
ストアド・プロシージャを使用して Web サービスを呼び出します。

事前条件

1. C# を使用して .NET で記述した Web サービス
2. Service1.asmx という名前の Web サービス
3. 文字列パラメータをとる HelloWorld という名前の関数
4. 名前空間 “iAnywhere”

手順
以下の手順に従って新規データベースを作成し、Interactive SQ からデータベースに接続して、Interactive SQL から新規 Web サービスを作成します。

1. 一時ディレクトリの下に、WebserviceTutorial というフォルダを作成します。 ( 例:c:\temp\WebserviceTutorial)

2. WebserviceTutorial ディレクトリから、以下のコマンドを実行します。
dbinit webservice.db
空のデータベースが作成されます。

o WebserviceTutorial ディレクトリから以下のコマンドを実行して、データベースを開始します。
SQL Anywhere 10 の場合:
dbeng10 webservice.db

o SQL Anywhere 9 の場合:
dbeng9 webservice.db

3. ここでは、データベースは 1 つのみでデータベース・サーバが実行されていると想定します。
以下のコマンドを実行して Interactive SQL を起動させ、データベースに接続します。
dbisql -c “UID=DBA;PWD=sql;ENG=webservice”

4. Interactive SQL から、以下のコマンドを実行します。
CREATE PROCEDURE “DBA”.”HelloWorld”(nm long varchar) url

‘http://ali-vista/webservicessample/Service1.asmx’ type ‘SOAP:DOC’ namespace
‘iAnywhere’

5. 以下のコマンドを実行して、Web サービスを呼び出します。
CALL HelloWorld(’Ali’)

説明

Web サービス関数コード

[WebMethod]
     public string HelloWorld(string nm)
     {
       return “Hello ” + nm;
     }
この関数は文字列を受け取り、SQL Anywhere のストアド・プロシージャから引き渡された文字列値に ”Hello” という文字列を連結して返します。

名前空間

ここで使用する名前空間は、“iAnywhere” です。名前空間は任意に指定できます。ただし、この名前空間は、SQL Anywhere のストアド・プロシージャで定義される名前空間と必ず一致させてください。

[WebService(Namespace = “iAnywhere”)]
  public class Service1 : System.Web.Services.WebService
  {
     public Service1()
     {
       //CODEGEN: This call is required by the ASP.NET Web
  //Services Designer
       InitializeComponent();
     }
  }

ストアド・プロシージャ

CREATE PROCEDURE “DBA”.”HelloWorld”(nm long varchar) url
‘http://ali-vista/webservicessample/Service1.asmx’ type ‘SOAP:DOC’ namespace ‘iAnywhere’

・ “DBA”.“HelloWorld” ストアド・プロシージャ名です。この名前は、Web サービス関数の名前と一致させる必要があります。
・ Nm long varchar 文字列であるパラメータです。
・ url C# を使用して .NET 2.0 で記述したサンプルの Web サービス・ファイルへのHTTP パスです。
・ Type ‘SOAP:DOC’ デフォルトは、RPC です。
・ Namespace ‘iAnywhere’ この名前は、Web サービス関数が含まれる Web サービス・ファイルの名前空間と一致させる必要があります。