このレッスンでは、ダイレクト・ロー・ハンドリングを使用して、クライアント・データベース内の OrderComments テーブルのローを処理します。ダイレクト・ロー・ハンドリング用に次のメソッドを追加します。
GetUpload このメソッドは handle_UploadData イベントに使用します。GetUpload では、アップロードされたコメントを order_central.xls という Excel ワークシートに書き込みます。
SetDownload このメソッドは handle_DownloadData イベントに使用します。SetDownload は、Excel ワークシート order_central.xls に格納されたデータを取り出し、リモート・クライアントに送信します。
次の手順では、処理用メソッドを含む Java のクラスを作成する方法を示します。完全なリストについては、MobiLinkOrders コードの全リスト (Java)を参照してください。
MobiLinkOrders というクラスを作成します。
テキスト・エディタまたは開発環境で次のコードを入力します。
import ianywhere.ml.script.*; import java.io.*; import java.sql.*; public class MobiLinkOrders { // ... } |
クラスレベルの DBConnectionContext インスタンスを宣言します。
DBConnectionContext _cc; |
Mobile Link サーバによって DBConnectionContext のインスタンスがクラス・コンストラクタに渡されます。DBConnectionContext には、Mobile Link 統合データベースとの現在の接続に関する情報がカプセル化されます。
クラス・コンストラクタを作成します。
クラス・コンストラクタが、クラスレベルの DBConnectionContext インスタンスを設定します。
テキスト・エディタまたは開発環境で次のコードを入力します。
public MobiLinkOrders( DBConnectionContext cc ) { _cc = cc; } |
GetUpload() メソッドを作成します。
GetUpload メソッドでは、OrderComments テーブルを表す UploadedTableData クラス・インスタンスを取得します。OrderComments テーブルには、遠隔地の営業部員による特別なコメントが含まれます。このテーブルは レッスン 6:Mobile Link クライアントの設定で作成します。UploadedTableData の getInserts メソッドでは、注文に対する新しいコメントの結果セットを返します。
テキスト・エディタまたは開発環境で次のコードを入力します。
// method for the handle_UploadData synchronization event public void GetUpload( UploadData ut ) throws SQLException, IOException { // get an UploadedTableData for OrderComments UploadedTableData orderCommentsTbl = ut.getUploadedTableByName("OrderComments"); // get inserts uploaded by the MobiLink client ResultSet insertResultSet = orderCommentsTbl.getInserts(); try { // connect to the excel worksheet through ODBC Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con = DriverManager.getConnection( "jdbc:odbc:excel_datasource" ); while( insertResultSet.next() ) { // get order comments int _commentID = insertResultSet.getInt("comment_id"); int _orderID = insertResultSet.getInt("order_id"); String _specialComments = insertResultSet.getString("order_comment"); // execute an insert statement to add the order comment to the worksheet Statement st = con.createStatement(); st.executeQuery( "insert into [order_sheet$]" + "(order_id, comment_id, order_comment) VALUES (" + Integer.toString(_orderID) + ", " + Integer.toString(_commentID) + ", '" + _specialComments + "')"); st.close(); } con.close(); } catch(Exception ex) { System.err.print("Exception: "); System.err.println(ex.getMessage()); } insertResultSet.close(); } |
SetDownload メソッドを作成します。
OrderComments テーブルを表すクラス・インスタンスを取得します。
DBConnectionContext の getDownloadData メソッドを使用して DownloadData のインスタンスを取得します。DownloadData の getDownloadTableByName メソッドを使用して、OrderComments テーブルの DownloadTableData インスタンスを返します。
テキスト・エディタまたは開発環境で次のコードを入力します。
DownloadData download_d = _cc.getDownloadData(); DownloadTableData download_td = download_d.getDownloadTableByName( "OrderComments" ); |
このテーブルは、レッスン 6:Mobile Link クライアントの設定でリモート・データベースに作成します。
準備文または IDBCommand を取得します。これを使用すると、ダウンロードに挿入操作や更新操作を追加できます。
DownloadTableData の getUpsertPreparedStatement メソッドを使用して java.sql.PreparedStatement のインスタンスを返します。
テキスト・エディタまたは開発環境で次のコードを入力します。
PreparedStatement download_upserts = download_td.getUpsertPreparedStatement(); |
各ローのダウンロード・データを設定します。
次の例では、order_central.xls ワークシートを参照して、Mobile Link ダウンロードにデータを追加しています。
テキスト・エディタまたは開発環境で次のコードを入力します。
try { // connect to the excel worksheet through ODBC Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con = DriverManager.getConnection( "jdbc:odbc:excel_datasource" ); // retrieve all the rows in the worksheet Statement st = con.createStatement(); ResultSet Excel_rs = st.executeQuery( "select * from [order_sheet$]" ); while (Excel_rs.next()) { // retrieve the row data int Excel_comment_id = Excel_rs.getInt(1); int Excel_order_id = Excel_rs.getInt(2); String Excel_comment = Excel_rs.getString(3); // add the Excel data to the MobiLink download. download_upserts.setInt( 1, Excel_comment_id ); download_upserts.setInt( 2, Excel_order_id ); download_upserts.setString( 3, Excel_comment ); download_upserts.executeUpdate(); } // close the excel result set, statement, and connection. Excel_rs.close(); st.close(); con.close(); } catch(Exception ex) { System.err.print("Exception: "); System.err.println(ex.getMessage()); } |
ダウンロードに挿入操作または更新操作を追加する準備文を終了します。
テキスト・エディタまたは開発環境で次のコードを入力します。
download_upserts.close(); |
Java コードを MobiLinkOrders.java という名前で作業ディレクトリ c:\MLobjexcel に保存します。
クラス・ファイルをコンパイルします
Java のソース・ファイルが含まれるディレクトリに移動します。
Java 用の Mobile Link サーバ API ライブラリを参照して MobiLinkOrders をコンパイルします。
install-dir\Java にある mlscript.jar を参照する必要があります。次のコマンドを実行して Java クラスをコンパイルします。c:\Program Files\SQL Anywhere 11\ は SQL Anywhere 11 の実際のディレクトリに置き換えてください。
javac -classpath "c:\Program Files\SQL Anywhere 11\java\mlscript.jar" MobiLinkOrders.java |
同期論理の詳細については、Java による同期スクリプトの作成を参照してください。
ダイレクト・ロー・ハンドリングの詳細については、ダイレクト・ロー・ハンドリングを参照してください。
MobiLinkOrders コードの全リスト (Java)
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |