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 サーバ API » Java による同期スクリプトの作成 » Java 用 Mobile Link サーバ API リファレンス

 

DownloadTableData インタフェース

構文
public ianywhere.ml.script.DownloadTableData
備考

Mobile Link ダイレクト・ダウンロードのテーブル操作をカプセル化します。このインタフェースを使用して、クライアントにダウンロードされるデータ操作を設定します。現在の同期の DownloadTableData インスタンスを取得するには、DownloadData インタフェースを使用します。DownloadTableData.getUpsertPreparedStatement と getDeletePreparedStatement メソッドを使用して、それぞれ更新/挿入操作と削除操作を行う Java 準備文を取得できます。java.sql.PreparedStatement.executeUpdate メソッドはダウンロードの操作を登録します。

注意

挿入と更新用の準備文のすべてのカラム値を設定してください。削除操作の場合は、プライマリ・キー値を設定します。

削除とアップサート準備文を両方同時に開いておくことはできません。

java.sql.PreparedStatement の詳細については、Java SDK マニュアルを参照してください。

参照
メンバ

ianywhere.ml.script.DownloadTableData のすべてのメンバ (継承されたメンバも含みます) を以下に示します。

Mobile Link クライアント・データベースで remoteOrders というテーブルを使用しているものとします。

CREATE TABLE remoteOrders (
    pk INT NOT NULL,
    col1 VARCHAR(200),
    PRIMARY KEY (pk)
);

次の例では DownloadData.getDownloadTableByName メソッドを使用して、remoteOrders テーブルを表す DownloadTableData インスタンスを返します。

注意

この例は、_cc という DBConnectionContext インスタンスがあることを前提としています。

// The method used for the handle_DownloadData event
public void handleDownload() throws SQLException {

    // Get the DownloadData for the current synchronization.
    DownloadData my_dd = _cc.getDownloadData();
 
    // Get the DownloadTableData for the remoteOrders table.
    DownloadTableData td = my_dd.getDownloadTableByName("remoteOrders");

    // User defined-methods to set download operations.
    setDownloadInserts(td);
    setDownloadDeletes(td); 

    // ... 
}

この例では、setDownloadInserts メソッドは DownloadTableData.getUpsertPreparedStatement を使用して、挿入または更新するローの準備文を取得します。PreparedStatement.setInt メソッドと PreparedStatement.setString メソッドは、リモート・データベースに挿入するカラム値を設定します。

void setDownloadInserts(DownloadTableData td) { 
    java.sql.PreparedStatement insert_ps = td.getUpsertPreparedStatement();

    // The following method calls are the same as the following SQL statement:
    // INSERT INTO remoteOrders(pk, col1) values(2300, "truck");
    insert_ps.setInt(1, 2300); 
    insert_ps.setString(2, "truck");

    int update_result = insert_ps.executeUpdate();
    if (update_result == 0) {
        // Insert was filtered because it was uploaded
        // in the same synchronization.
    } 
    else {
        // Insert was not filtered.
    }
}

setDownloadDeletes メソッドは DownloadTableData.getDeletePreparedStatement を使用して、削除するローの準備文を取得します。java.sql.PreparedStatement.setInt メソッドは、リモート・データベースで削除するローのプライマリ・キー値を設定し、java.sql.PreparedStatement.executeUpdate メソッドはダウンロードするロー値を登録します。

void setDownloadDeletes(DownloadTableData td) { 
    java.sql.PreparedStatement delete_ps = td.getDeletePreparedStatement();

    // The following method calls are the same as the following SQL statement:
    // DELETE FROM remoteOrders  where pk=2300;
    delete_ps.setInt(1, 2300); 
    delete_ps.executeUpdate();
}

getDeletePreparedStatement メソッド
getUpsertPreparedStatement メソッド
getName メソッド
getMetaData メソッド
getLastDownloadTime メソッド