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

SQL Anywhere 11.0.1 (日本語) » Mobile Link - クイック・スタート » Mobile Link チュートリアル » チュートリアル:ダイレクト・ロー・ハンドリングの概要

 

レッスン 2:同期スクリプトの追加

このレッスンでは、SQL ロー・ハンドリングとダイレクト・ロー・ハンドリング用のスクリプトを統合データベースに追加します。

SQL ロー・ハンドリング

SQL ロー・ハンドリングを使用すると、リモート・データを、Mobile Link 統合データベース内のテーブルと同期できます。SQL ベースのスクリプトでは、次の情報を定義します。

  • Mobile Link クライアントからアップロードするデータを統合データベースに適用する方法。

  • 統合データベースからダウンロードするデータ。

このレッスンでは、次の SQL ベースのアップロード・イベントとダウンロード・イベント用の同期スクリプトを作成します。

  • upload_insert   リモート・クライアント・データベースに挿入された新しい注文を統合データベースに適用する方法を定義します。

  • download_cursor   Mobile Link 統合データベースで更新された注文のうち、リモート・クライアントにダウンロードするものを定義します。

この手順では、ストアド・プロシージャを使用して、Mobile Link 統合データベースに同期スクリプト情報を追加します。

♦  SQL ベースのスクリプトを Mobile Link のシステム・テーブルに追加するには、次の手順に従います。
  1. 統合データベースに接続していない場合は、Interactive SQL で接続します。

    次のコマンドを実行します。

    dbisql -c "dsn=mobilink_db"
  2. ml_add_table_script ストアド・プロシージャを使用して、upload_insert と download_cursor の各イベント用の SQL ベースのテーブル・スクリプトを追加します。

    Interactive SQL で次のコマンドを実行します。upload_insert のスクリプトでは、アップロードされた order_id、product_id、quantity、order_status を Mobile Link 統合データベースに挿入します。download_cursor のスクリプトでは、タイムスタンプベースのフィルタを使用して、更新されたローをリモート・クライアントにダウンロードします。

    CALL ml_add_table_script( 'default', 'RemoteOrders', 
       'upload_insert',
         'INSERT INTO RemoteOrders( order_id, product_id, quantity, order_status)
          VALUES( ?, ?, ?, ? )' );
       
    CALL ml_add_table_script( 'default', 'RemoteOrders',
       'download_cursor',
         'SELECT order_id, product_id, quantity, order_status
          FROM RemoteOrders WHERE last_modified >= ?');
    
    commit
ダイレクト・ロー・ハンドリングの処理

このチュートリアルでは、ダイレクト・ロー・ハンドリングを使用して特別な処理を SQL ベースの同期システムに追加します。この手順では、handle_UploadData、handle_DownloadData、end_download の各イベントに対応するメソッド名を登録します。独自の Java または .NET クラスを レッスン 3:ダイレクト・ロー・ハンドリングを処理する Java または .NET の論理の記述で作成します。

♦  Mobile Link のシステム・テーブルにダイレクト・ロー・ハンドリングの情報を追加するには、次の手順に従います。
  1. Interactive SQL の統合データベースに接続します。

    次のコマンドを実行します。

    dbisql -c "dsn=mobilink_db"
  2. end_download イベント用の Java または .NET メソッドを登録します。

    このメソッドを使用して、end_download 接続イベントが起動したときに入出力リソースを解放します。

    Java の場合は、Interactive SQL で次のコマンドを実行します。

    CALL ml_add_java_connection_script( 'default',
       'end_download',
         'MobiLinkOrders.EndDownload' );

    .NET の場合は、Interactive SQL で次のコマンドを実行します。

    CALL ml_add_dnet_connection_script( 'default',
       'end_download',
         'MobiLinkOrders.EndDownload' );

    Interactive SQL によって、ユーザ定義の EndDownload メソッドが end_download イベント用に登録されます。

  3. handle_UploadData と handle_DownloadData の各同期イベント用の Java または .NET メソッドを登録します。

    Java の場合は、Interactive SQL で次のコマンドを実行します。

    CALL ml_add_java_connection_script( 'default', 
       'handle_UploadData',
         'MobiLinkOrders.GetUpload' );
       
    CALL ml_add_java_connection_script( 'default',
       'handle_DownloadData',
         'MobiLinkOrders.SetDownload' );
    
    commit

    .NET の場合は、Interactive SQL で次のコマンドを実行します。

    CALL ml_add_dnet_connection_script( 'default', 
       'handle_UploadData',
         'MobiLinkOrders.GetUpload' );
       
    CALL ml_add_dnet_connection_script( 'default',
       'handle_DownloadData',
         'MobiLinkOrders.SetDownload' );
    
    commit

    Interactive SQL によって、ユーザ定義の GetUpload と SetDownload の各メソッドが、それぞれ handle_UploadData と handle_DownloadData の各イベント用に登録されます。

詳細情報

SQL ベースのイベントを使用したリモート・クライアントから Mobile Link 統合データベースへのデータのアップロードについては、次の項を参照してください。

統合データベース以外のデータ・ソースへのデータのアップロードについては、ダイレクト・アップロードの処理を参照してください。

SQL ベースのイベントを使用した Mobile Link 統合データベースからのデータのダウンロードについては、次の項を参照してください。

統合データベース以外のデータ・ソースへのデータのダウンロードについては、ダイレクト・ダウンロードの処理を参照してください。

同期イベントの順序については、Mobile Link イベントの概要を参照してください。

ダウンロードをフィルタする同期の方法については、タイムスタンプベースのダウンロードリモート・データベース間でのローの分割を参照してください。

スクリプトの管理については、スクリプトの追加と削除を参照してください。

ダイレクト・ロー・ハンドリングについては、ダイレクト・ロー・ハンドリングを参照してください。