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 チュートリアル » チュートリアル:Microsoft Excel との同期

 

レッスン 4:Mobile Link のダイレクト・ロー・ハンドリングを使用する Java のクラスの作成

このレッスンでは、ダイレクト・ロー・ハンドリングを使用して、クライアント・データベース内の OrderComments テーブルのローを処理します。ダイレクト・ロー・ハンドリング用に次のメソッドを追加します。

  • GetUpload   このメソッドは handle_UploadData イベントに使用します。GetUpload では、アップロードされたコメントを order_central.xls という Excel ワークシートに書き込みます。

  • SetDownload   このメソッドは handle_DownloadData イベントに使用します。SetDownload は、Excel ワークシート order_central.xls に格納されたデータを取り出し、リモート・クライアントに送信します。

次の手順では、処理用メソッドを含む Java のクラスを作成する方法を示します。完全なリストについては、MobiLinkOrders コードの全リスト (Java)を参照してください。

♦  ダウンロード専用のダイレクト・ロー・ハンドリング用の Java のクラスを作成するには、次の手順に従います。
  1. MobiLinkOrders というクラスを作成します。

    テキスト・エディタまたは開発環境で次のコードを入力します。

    import ianywhere.ml.script.*;
    import java.io.*;
    import java.sql.*;
    
    public class MobiLinkOrders {
        // ...
    }
  2. クラスレベルの DBConnectionContext インスタンスを宣言します。

    DBConnectionContext _cc;

    Mobile Link サーバによって DBConnectionContext のインスタンスがクラス・コンストラクタに渡されます。DBConnectionContext には、Mobile Link 統合データベースとの現在の接続に関する情報がカプセル化されます。

  3. クラス・コンストラクタを作成します。

    クラス・コンストラクタが、クラスレベルの DBConnectionContext インスタンスを設定します。

    テキスト・エディタまたは開発環境で次のコードを入力します。

    public MobiLinkOrders( DBConnectionContext cc ) {
        _cc = cc;
    }
  4. 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();
    }
  5. SetDownload メソッドを作成します。

    1. OrderComments テーブルを表すクラス・インスタンスを取得します。

      DBConnectionContext の getDownloadData メソッドを使用して DownloadData のインスタンスを取得します。DownloadData の getDownloadTableByName メソッドを使用して、OrderComments テーブルの DownloadTableData インスタンスを返します。

      テキスト・エディタまたは開発環境で次のコードを入力します。

      DownloadData download_d = _cc.getDownloadData();
      DownloadTableData download_td = download_d.getDownloadTableByName( "OrderComments" );
      注意

      このテーブルは、レッスン 6:Mobile Link クライアントの設定でリモート・データベースに作成します。

    2. 準備文または IDBCommand を取得します。これを使用すると、ダウンロードに挿入操作や更新操作を追加できます。

      DownloadTableData の getUpsertPreparedStatement メソッドを使用して java.sql.PreparedStatement のインスタンスを返します。

      テキスト・エディタまたは開発環境で次のコードを入力します。

      PreparedStatement download_upserts = download_td.getUpsertPreparedStatement();
    3. 各ローのダウンロード・データを設定します。

      次の例では、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());
      }
    4. ダウンロードに挿入操作または更新操作を追加する準備文を終了します。

      テキスト・エディタまたは開発環境で次のコードを入力します。

      download_upserts.close();
  6. Java コードを MobiLinkOrders.java という名前で作業ディレクトリ c:\MLobjexcel に保存します。

  7. クラス・ファイルをコンパイルします

    1. Java のソース・ファイルが含まれるディレクトリに移動します。

    2. 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)