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

SAP Sybase SQL Anywhere 16.0 (Deutsch) » MobiLink - Erste Orientierung » Praktische Einführungen in MobiLink » Praktische Einführung: Verwenden der direkten Zeilenbehandlung

 

Lektion 4: Hinzufügen von Synchronisationsskripten

Sie verwenden die direkte Zeilenbehandlung, um mit gespeicherten Prozeduren Ihrer konsolidierten MobiLink-Datenbank Synchronisationsskriptinformationen hinzuzufügen. In dieser Lektion registrieren Sie Methodennamen, die den Ereignissen handle_UploadData, handle_DownloadData, end_download, download_cursor und download_delete_cursor entsprechen. Sie erstellen Ihre eigene Java- oder .NET-Klasse in einer späteren Lektion.

Voraussetzungen

In dieser Lektion wird davon ausgegangen, dass Sie bereits alle vorherigen Lektionen abgeschlossen haben. Siehe Lektion 1: Einrichten einer Textdatei-Datenquelle.

In dieser Lektion wird davon ausgegangen, dass Sie die Rollen und Privilegien haben, die im Abschnitt "Privilegien" am Anfang dieser praktischen Einführung aufgeführt sind: Praktische Einführung: Verwenden der direkten Zeilenbehandlung.

Kontext und Bemerkungen

Mit der SQL-Zeilenbehandlung können Sie entfernte Daten mit Tabellen in Ihrer konsolidierten MobiLink-Datenbank synchronisieren. SQL-basierte Skripten legen Folgendes fest:

  • Wie Upload-Daten von einem MobiLink-Client in die konsolidierte Datenbank übernommen werden

  • Welche Daten von der konsolidierten Datenbank heruntergeladen werden

Die folgenden SQL-basierten Upload- und Download-Ereignisse werden erstellt:

  • upload_insert   Dieses Ereignis definiert, wie neue Bestellungen aus einer entfernten Clientdatenbank in die konsolidierte Datenbank übernommen werden.

  • download_cursor   Dieses Ereignis definiert die Bestellungen, die auf entfernte Clients heruntergeladen werden sollen.

  • download_delete_cursor   Dieses Ereignis ist erforderlich, wenn Sie Synchronisationsskripten verwenden, die nicht nur einen reinen Upload ausführen. Konfigurieren Sie den MobiLink-Server so, dass er dieses Ereignis für die vorliegende praktische Einführung ignoriert.

 Aufgabe
  1. Verbinden Sie sich über Interactive SQL mit Ihrer konsolidierten Datenbank, falls dies nicht schon geschehen ist, indem Sie folgenden Befehl ausführen:

    dbisql -c "DSN=mldirect_db"
  2. Verwenden Sie die gespeicherte Prozedur ml_add_table_script, um SQL-basierte Tabellenskripten für die Ereignisse upload_insert, download_cursor und download_delete_cursor hinzuzufügen.

    Führen Sie hierzu die folgende SQL-Anweisung in Interactive SQL aus. Das upload_insert-Skript fügt order_id, product_id, quantity und order_status in die konsolidierte MobiLink-Datenbank ein. Das download_cursor-Skript verwendet eine Filterung auf Zeitstempelbasis für den Download aktualisierter Zeilen auf entfernte Clients.



    CALL ml_add_table_script( 'default', 'RemoteOrders', 
        'upload_insert',
        'INSERT INTO RemoteOrders( order_id, product_id, quantity, order_status)
         VALUES( {ml r.order_id}, {ml r.product_id}, {ml r.quantity}, {ml r.order_status} )' );
       
    CALL ml_add_table_script( 'default', 'RemoteOrders',
        'download_cursor',
        'SELECT order_id, product_id, quantity, order_status
         FROM RemoteOrders WHERE last_modified >= {ml s.last_table_download}');
    
    CALL ml_add_table_script( 'default', 'RemoteOrders',
        'download_delete_cursor', '--{ml_ignore}');
    
    COMMIT;
  3. Registrieren Sie eine Java- oder .NET-Methode für das end_download-Ereignis.

    Mit dieser Methode geben Sie Speicherressourcen frei, wenn der MobiLink-Server das end_download-Verbindungsereignis ausführt.

    Für Java führen Sie die folgende Anweisung in Interactive SQL aus:

    CALL ml_add_java_connection_script( 'default',
        'end_synchronization',
        'MobiLinkOrders.EndSync' );

    Für .NET führen Sie die folgende Anweisung in Interactive SQL aus:

    CALL ml_add_dnet_connection_script( 'default',
        'end_synchronization',
        'MobiLinkOrders.EndSync' );

    Interactive SQL registriert die benutzerdefinierte EndDownload-Methode für das end_download-Ereignis.

  4. Registrieren Sie Java- oder .NET-Methoden für die Ereignisse handle_UploadData und handle_DownloadData.

    Für Java führen Sie die folgenden Anweisungen in Interactive SQL aus:

    CALL ml_add_java_connection_script( 'default', 
        'handle_UploadData',
        'MobiLinkOrders.GetUpload' );
       
    CALL ml_add_java_connection_script( 'default',
        'handle_DownloadData',
        'MobiLinkOrders.SetDownload' );

    Für .NET führen Sie die folgenden Anweisungen in Interactive SQL aus:

    CALL ml_add_dnet_connection_script( 'default', 
        'handle_UploadData',
        'MobiLinkOrders.GetUpload' );
       
    CALL ml_add_dnet_connection_script( 'default',
        'handle_DownloadData',
        'MobiLinkOrders.SetDownload' );

    Interactive SQL registriert die benutzerdefinierten GetUpload- und SetDownload-Methoden jeweils für die Ereignisse handle_UploadData und handle_DownloadData. Sie erstellen diese Methoden in einer folgenden Lektion.

  5. Registrieren Sie download_cursor- und download_delete_cursor-Ereignisse.

    Führen Sie hierzu die folgende SQL-Anweisung in Interactive aus:

    CALL ml_add_table_script( 'default', 'OrderComments',
        'download_cursor', '--{ml_ignore}');
    
    CALL ml_add_table_script( 'default', 'OrderComments',
        'download_delete_cursor', '--{ml_ignore}');

    Die Ereignisse download_cursor und download_delete_cursor müssen für die OrderComments-Tabelle registriert werden, wenn Sie Skripten verwenden, weil die Synchronisation in beiden Richtungen erfolgt und nicht nur ein reiner Upload ist. Siehe Erforderliche Skripten.

  6. Schreiben Sie Ihre Änderungen fest.

    Führen Sie die folgende Anweisung in Interactive SQL aus:

    COMMIT;
  7. Schließen Sie Interactive SQL.

Ergebnisse

Die Methodennamen zu den Ereignissen handle_UploadData, handle_DownloadData, end_download, download_cursor und download_delete_cursor werden registriert.

 Siehe auch