Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » MobiLink - Serveradministration » MobiLink-Ereignisse » Synchronisationsereignisse

 

handle_DownloadData (Verbindungsereignis)

Wird von der direkten Zeilenbehandlung zum Download einer Gruppe von Zeilen benutzt.

Parameter

Keine.

Standardaktion

Keine.

Bemerkungen

Mit dem Ereignis handle_DownloadData legen Sie fest, welche Vorgänge unter Verwendung der direkten Zeilenbehandlung in MobiLink-Clients heruntergeladen werden.

Mit der direkten Zeilenbehandlung werden Datenquellen synchronisiert, bei denen es sich nicht um konsolidierte MobiLink-Datenbanken handelt. Weitere Hinweise finden Sie unter Direkte Zeilenbehandlung.

Sie erstellen den direkten Download mithilfe der Klassen DownloadData und DownloadTableData in der API für Java oder .NET des MobiLink-Servers.

Für Java gibt die Methode DBConnectionContext getDownloadData eine DownloadData-Instanz für die aktuelle Synchronisation zurück. DownloadData umfasst alle Download-Vorgänge, die an einen entfernten Client gesendet werden. Mit den Methoden DownloadData getDownloadTables und getDownloadTableByName können Sie eine DownloadTableData-Instanz abrufen. DownloadTableData umfasst Download-Vorgänge für eine bestimmte Tabelle. Sie können mit der getUpsertPreparedStatement-Methode vorbereitete Anweisungen für Einfügungs- und Aktualisierungsvorgänge abrufen. Mit der Methode DownloadTableData getDeletePreparedStatement rufen Sie vorbereitete Anweisungen für Löschvorgänge ab.

Für .NET gibt die Methode DBConnectionContext getDownloadData eine DownloadData-Instanz für die aktuelle Synchronisation zurück. DownloadData umfasst alle Download-Vorgänge, die an einen entfernten Client gesendet werden. Mit den Methoden DownloadData getDownloadTables und GetDownloadTableByName können Sie eine DownloadTableData-Instanz abrufen. DownloadTableData umfasst Download-Vorgänge für eine bestimmte Tabelle. Sie können mit der Methode GetUpsertPreparedStatement Befehle für Einfügungs- und Aktualisierungsvorgänge abrufen. Mit der Methode DownloadTableData getDeleteCommand rufen Sie Befehle für Löschvorgänge ab.

Weitere Hinweise zu Java finden Sie unter DBConnectionContext-Schnittstelle. Weitere Hinweise zu .NET finden Sie unter DBConnectionContext-Schnittstelle.

Sie können den Download in handle_DownloadData oder einem anderen Synchronisationsereignis erstellen. MobiLink ist so flexibel, dass Sie den Download einrichten können, wenn Daten hochgeladen werden oder wenn bestimmte Ereignisse auftreten. Falls Sie den direkten Download in einem anderen Ereignis als handle_DownloadData erstellen möchten, müssen Sie ein Skript handle_DownloadData erstellen, dessen Methode nichts ausführt. MobiLink verlangt, dass dieses Skript definiert ist, um die direkte Zeilenbehandlung zu ermöglichen. Außer bei Nur-Upload-Synchronisationen verlangt der MobiLink-Server, dass mindestens ein Skript handle_DownloadData definiert ist.

Falls Sie den direkten Download in einem anderen Ereignis als handle_DownloadData erstellen, darf das Ereignis nicht vor dem Ereignis begin_synchronization und nicht nach dem Ereignis end_download stattfinden.

Hinweis

Dieses Ereignis kann nicht als SQL implementiert werden.

Siehe auch
Java-Beispiel

Der folgende Aufruf einer MobiLink-Systemprozedur registriert eine Java-Methode namens handleDownload für das Verbindungsereignis handle_DownloadData, wenn die Skriptversion ver1 synchronisiert wird. Sie führen diese Systemprozedur für Ihre konsolidierte MobiLink-Datenbank aus.

CALL ml_add_java_connection_script( 
 'ver1',
 'handle_DownloadData',
 'MyPackage.MyClass.handleDownload' )

Weitere Hinweise finden Sie unter ml_add_java_connection_script-Systemprozedur.

Im folgenden Beispiel wird gezeigt, wie Sie mit der handleDownload-Methode einen Download erstellen.

Der folgende Code richtet eine Instanz der Klassenebene DBConnectionContext im Konstruktor für eine Klasse namens MobiLinkOrders ein.

import ianywhere.ml.script.*;
import java.io.*;
import java.sql.*;
import java.lang.System;

public class  MobiLinkOrders{

  DBConnectionContext _cc;

  public MobiLinkOrders( DBConnectionContext cc ) {
    _cc = cc;
  }

In der Methode HandleDownload geben Sie mit der Methode DBConnectionContext getDownloadData eine DownloadData-Instanz für die aktuelle Synchronisation zurück. Die Methode DownloadData getDownloadTableByName gibt eine DownloadTableData-Instanz für die remoteOrders-Tabelle zurück. Die Methode DownloadTableData getUpsertPreparedStatement gibt ein java.sql.PreparedStatement zurück. Um dem Download einen Vorgang hinzuzufügen, richten Sie alle Spaltenwerte ein und rufen die Methode executeUpdate auf.

Beim Folgenden handelt es sich um die Methode handleDownload der Klasse MobiLinkOrders. Sie fügt dem Download zwei Zeilen für eine Tabelle namens remoteOrders hinzu.

// Method used for the handle_DownloadData event.
public void handleDownload() throws SQLException {
  // Get DownloadData instance for current synchronization.
  DownloadData downloadData = _cc.getDownloadData();
 
  // Get a DownloadTableData instance for the remoteOrders table.
  DownloadTableData td = downloadData.getDownloadTableByName("remoteOrders");

  // Get a java.sql.PreparedStatement for upsert (update/insert) operations.
  PreparedStatement upsertPS = td.getUpsertPreparedStatement();

  // Set values for one row.
  upsertPS.setInt( 1, 2300 ); 
  upsertPS.setInt( 2, 100 );

  // Add the values to the download.
  int updateResult = upsertPS.executeUpdate();

  // Set values for another row.
  upsertPS.setInt( 1, 2301 );
  upsertPS.setInt( 2, 50 );
  updateResult = upsertPS.executeUpdate();

  upsertPS.close();

  // ... 
}
.NET-Beispiel

Der folgende Aufruf einer MobiLink-Systemprozedur registriert eine .NET-Methode namens HandleDownload als das Skript für das Verbindungsereignis handle_DownloadData, wenn die Skriptversion ver1 synchronisiert wird. Diese Syntax gilt für konsolidierte SQL Anywhere-Datenbanken.

CALL ml_add_dnet_connection_script(
   'ver1', 'handle_DownloadData',
   'TestScripts.Test.HandleDownload'
)

Im Folgenden sehen Sie die .NET-Beispielmethode HandleDownload.

using System;
using System.Data;
using System.IO;
using iAnywhere.MobiLink.Script;
using iAnywhere.MobiLink;

namespace MyScripts
{
    /// <summary>
    /// Tests that scripts are called correctly for most sync events.
    /// </summary>
    public class MobiLinkOrders
    {
 private DBConnectionContext _cc;

 public MobiLinkOrders( DBConnectionContext cc )
 {
     _cc = cc;
 }

 ~MobiLinkOrders()
 {
 }

 public void handleDownload()
 {
     // Get DownloadData instance for current synchronization.
     DownloadData my_dd = _cc.GetDownloadData();
     
     // Get a DownloadTableData instance for the remoteOrders table.
     DownloadTableData td = my_dd.GetDownloadTableByName("remoteOrders");

     // Get an IdbCommand for upsert (update/insert) operations.
     IDbCommand upsert_stmt = td.GetUpsertCommand();

     IDataParameterCollection parameters = upsert_stmt.Parameters; 

     // Set values for one row.
     parameters[ 0 ] = 2300;
     parameters[ 1 ] = 100;

     // Add the values to the download.
     int update_result = upsert_stmt.ExecuteNonQuery();

     // Set values for another row.
     parameters[ 0 ] = 2301;
     parameters[ 1 ] = 50;
     update_result = upsert_stmt.ExecuteNonQuery();

     // ...
 }

    }
}