このレッスンでは、SQL ロー・ハンドリングとダイレクト・ロー・ハンドリング用のスクリプトを統合データベースに追加します。
SQL ロー・ハンドリングを使用すると、リモート・データを、Mobile Link 統合データベース内のテーブルと同期できます。SQL ベースのスクリプトでは、次の情報を定義します。
Mobile Link クライアントからアップロードするデータを統合データベースに適用する方法。
統合データベースからダウンロードするデータ。
このレッスンでは、次の SQL ベースのアップロード・イベントとダウンロード・イベント用の同期スクリプトを作成します。
upload_insert リモート・クライアント・データベースに挿入された新しい注文を統合データベースに適用する方法を定義します。
download_cursor Mobile Link 統合データベースで更新された注文のうち、リモート・クライアントにダウンロードするものを定義します。
この手順では、ストアド・プロシージャを使用して、Mobile Link 統合データベースに同期スクリプト情報を追加します。
統合データベースに接続していない場合は、Interactive SQL で接続します。
次のコマンドを実行します。
dbisql -c "dsn=mobilink_db" |
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 の論理の記述で作成します。
Interactive SQL の統合データベースに接続します。
次のコマンドを実行します。
dbisql -c "dsn=mobilink_db" |
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 イベント用に登録されます。
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 イベントの概要を参照してください。
ダウンロードをフィルタする同期の方法については、タイムスタンプベースのダウンロードとリモート・データベース間でのローの分割を参照してください。
スクリプトの管理については、スクリプトの追加と削除を参照してください。
ダイレクト・ロー・ハンドリングについては、ダイレクト・ロー・ハンドリングを参照してください。
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |