Ein Nicht-SQL-Datenskript, das von der direkten Zeilenbehandlung zum Erstellen einer Gruppe von herunterzuladenden Zeilen verwendet wird.
Keine.
Keine.
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. Siehe 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 [MobiLink-Server Java].
Weitere Hinweise zu .NET finden Sie unter DBConnectionContext-Schnittstelle [MobiLink-Server .NET].
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. Wenn Sie den direkten Download in einem anderen Ereignis als handle_DownloadData erstellen möchten, müssen Sie ein handle_DownloadData-Skript erstellen, dessen Methode keinen Vorgang ausführt. Außer bei reinen Upload-Synchronisationen verlangt der MobiLink-Server, dass mindestens ein Skript handle_DownloadData definiert ist, um eine direkte Zeilenbehandlung von Downloads zu ermöglichen.
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.
Dieses Ereignis kann nicht als SQL implementiert werden.
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.MobiLinkOrders.handleDownload' ) |
Siehe 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(); } |
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.MobiLinkOrders.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(); // ... } } } |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |