ダイレクトローハンドリングを使用し、ストアドプロシージャを使用して Mobile Link 統合データベースに同期スクリプト情報を追加します。このレッスンでは、handle_UploadData、handle_DownloadData、end_download、download_cursor、download_delete_cursor の各イベントに対応するメソッド名を登録します。独自の Java または .NET クラスをレッスンの後半で作成します。
前提条件
このレッスンは、受講者がこれまでのすべてのレッスンを終了していることを前提としています。 レッスン 1:テキストファイルデータソースの設定を参照してください。
このレッスンでは、このチュートリアルの開始時に、権限のセクションで一覧されているロールと権限を持っていることを前提としています。 チュートリアル:ダイレクトローハンドリングの使用
内容と備考
SQL ローハンドリングを使用すると、リモートデータを、Mobile Link 統合データベース内のテーブルと同期できます。SQL ベースのスクリプトでは、次の情報を定義します。
Mobile Link クライアントからアップロードするデータを統合データベースに適用する方法。
統合データベースからダウンロードするデータ。
次の SQL ベースのアップロードイベントとダウンロードイベントが作成されます。
upload_insert このイベントは、クライアントデータベースに挿入された新しい注文を統合データベースに適用する方法を定義します。
download_cursor このイベントは、リモートクライアントにダウンロードする注文を定義します。
download_delete_cursor このイベントは、アップロード専用の同期スクリプトを使用する場合に必要です。このチュートリアルでは、このイベントを無視するように Mobile Link サーバを設定します。
まだ接続していない場合は、次のコマンドを実行して、Interactive SQL から統合データベースに接続します。
dbisql -c "DSN=mldirect_db" |
ml_add_table_script ストアドプロシージャを使用して、upload_insert、download_cursor、download_delete_cursor の各イベント用の SQL ベースのテーブルスクリプトを追加します。
Interactive SQL で次の 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( {ml r.order_id}, {ml r.product_id}, {ml r.quantity}, {ml r.order_status} )' ); CALL ml_add_table_script( 'default', 'RemoteOrders', 'download_cursor', 'SELECT order_id, product_id, quantity, order_status FROM RemoteOrders WHERE last_modified >= {ml s.last_table_download}'); CALL ml_add_table_script( 'default', 'RemoteOrders', 'download_delete_cursor', '--{ml_ignore}'); COMMIT; |
end_download イベント用の Java または .NET メソッドを登録します。
Mobile Link サーバが end_download 接続イベントを実行するときに、このメソッドを使用してメモリリソースを解放します。
Java の場合は、Interactive SQL で次の文を実行します。
CALL ml_add_java_connection_script( 'default', 'end_synchronization', 'MobiLinkOrders.EndSync' ); |
.NET の場合は、Interactive SQL で次の文を実行します。
CALL ml_add_dnet_connection_script( 'default', 'end_synchronization', 'MobiLinkOrders.EndSync' ); |
Interactive SQL によって、ユーザ定義の EndDownload メソッドが end_download イベント用に登録されます。
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' ); |
.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' ); |
Interactive SQL によって、ユーザ定義の GetUpload と SetDownload の各メソッドが、それぞれ handle_UploadData と handle_DownloadData の各イベント用に登録されます。これらのメソッドは次のレッスンで作成します。
download_cursor と download_delete_cursor の各イベントを登録します。
Interactive SQL で次の文を実行します。
CALL ml_add_table_script( 'default', 'OrderComments', 'download_cursor', '--{ml_ignore}'); CALL ml_add_table_script( 'default', 'OrderComments', 'download_delete_cursor', '--{ml_ignore}'); |
同期は双方向であり、アップロード専用ではないため、スクリプトを使用するときには、OrderComments テーブル用に download_cursor と download_delete_cursor の各イベントを登録してください。 必要なスクリプトを参照してください。
これまでの変更内容をコミットします。
Interactive SQL で次の文を実行します。
COMMIT; |
Interactive SQL を閉じます。
![]() |
DocCommentXchange で意見交換できます
|
Copyright © 2013, SAP AG or an SAP affiliate company. - SAP Sybase SQL Anywhere 16.0 |