Wenn Sie die Downloadbestätigung verwenden, können Sie in diesem Skript aufzeichnen, dass eine Publikation erfolgreich heruntergeladen wurde.
In der folgenden Tabelle stellt die Beschreibung den SQL-Datentyp bereit. Wenn Sie Ihr Skript in Java oder .NET schreiben, müssen Sie den entsprechenden Datentyp benutzen. Siehe SQL-Java-Datentypen und SQL-.NET-Datentypen.
In SQL-Skripten können Sie Ereignisparameter mit ihrem Namen oder mit einem Fragezeichen angeben. Die Verwendung von Fragezeichen ist veraltet und es wird empfohlen, benannte Parameter zu verwenden. Sie können nicht Namen und Fragezeichen in einem Skript mischen. Wenn Sie Fragezeichen verwenden, müssen die Parameter in der nachfolgend gezeigten Reihenfolge stehen und sind nur dann optional, wenn keine nachfolgenden Parameter angegeben wurden (z.B. müssen Sie Parameter 1 verwenden, wenn Sie Parameter 2 verwenden möchten). Wenn Sie benannte Parameter verwenden, können Sie beliebige Teilmengen der Parameter in beliebiger Reihenfolge angeben.
Parametername für SQL-Skripten | Beschreibung | Reihenfolge (veraltet für SQL) |
---|---|---|
s.remote_id | VARCHAR(128). Die entfernte ID von MobiLink. Sie können die entfernte ID nur dann referenzieren, wenn Sie benannte Parameter verwenden. | Nicht anwendbar |
s.username |
VARCHAR(128). Der MobiLink-Benutzername. |
1 |
s.last_publication_download |
TIMESTAMP. Frühester Zeitstempel für den letzten Download einer synchronisierten Tabelle. |
2 |
s.publication name | VARCHAR(128). Der Name der Publikation | 3 |
s.subscription_id | VARCHAR(128). Die entfernte Subskriptions-ID. | 4 |
Mithilfe dieses Ereignisses können Sie die Zeit aufzeichnen, wann diese Publikation erfolgreich in der entfernten Datenbank angewendet wurde.
Dieses Ereignis wird nur aufgerufen, wenn die nicht blockierende Downloadbestätigung verwendet wird. Im nicht blockierenden Modus wird die Downloadtransaktion festgeschrieben, und die Synchronisation beendet, wenn der Download gesendet wurde, wenn der Synchronisationsclient in einer neuen Verbindung den erfolgreichen Download bestätigt und nachdem das Skript end_synchronization der ursprünglichen Synchronisation verarbeitet wurde. Die Aktionen dieses Ereignisses werden zusammen mit einer Aktualisierung der Downloadzeit in den MobiLink-Systemtabellen festgeschrieben.
Wenn der Download fehlgeschlagen ist oder die Netzwerkverbindung getrennt wird, gibt es keine Bestätigung und dieses Skript wird nicht aufgerufen. Wenn die Downloadbestätigung für Ihr Geschäft entscheidend ist, sollten Sie den last_download-Parameter des Skripts prepare_for_download oder den last_publication_download-Parameter des Skripts begin_publication als Sicherung für die Verarbeitung Ihrer Downloadbestätigungen verwenden.
Aufgrund der spezifischen Natur dieses Skripts sind während der Synchronisation keine Variablen auf Verbindungsebene verfügbar, wenn dieses Ereignis ausgeführt wird.
Das folgende Skript fügt der Tabelle download_pubs_acked einen Datensatz hinzu. Der Datensatz enthält den Publikationsnamen, den ersten Authentifizierungsparameter und einen Download-Zeitstempel.
INSERT INTO download_pubs_acked( pub_name, auth_parm, last_download ) VALUES( {ml s.publication_name}, {ml a.1}, {ml s.last_publication_download} ) |
Der folgende Aufruf einer MobiLink-Systemprozedur registriert eine Java-Methode namens publicationDownloadACK als Skript für das Tabellenereignis publication_nonblocking_download_ack, wenn die Skriptversion ver1 synchronisiert wird.
CALL ml_add_java_connection_script ( 'ver1', 'publication_nonblocking_download_ack', 'ExamplePackage.ExampleClass.publicationDownloadACK' ) |
Im Folgenden sehen Sie die Java-Beispielmethode publicationDownloadACK. Sie führt eine Geschäftslogik aus und reagiert damit auf die Bestätigung, wenn eine besonders wichtig Publikation heruntergeladen wurde.
package ExamplePackage; import ianywhere.ml.script.*; import java.sql.*; public class ExampleClass { DBConnectionContext _cc; public ExampleClass( DBConnectionContext cc ) { _cc = cc; } public void confirmDownload( String user, Timestamp ts, String pubName ) throws SQLException { Connection conn = _cc.getConnection(); PreparedStatement stmt = conn.prepareStatement( "INSERT INTO download_pubs_acked( rem_id, last_download, pub_name ) " + "VALUES( ?, ?, ? )" ); stmt.setString( 1, _cc.getRemoteID() ); stmt.setTimestamp( 2, ts ); stmt.setString( 3, pubName ); stmt.executeUpdate(); stmt.close(); } } |
Der folgende Aufruf einer MobiLink-Systemprozedur registriert eine .NET-Methode namens EndTableDownload als Skript für das Tabellenereignis end_download, wenn die Skriptversion ver1 synchronisiert wird.
CALL ml_add_dnet_connection_script( 'ver1', 'publication_nonblocking_download_ack', 'TestScripts.Test.EndTableDownload' ) |
Im Folgenden sehen Sie die .NET-Beispielmethode EndTableDownload. Sie führt eine Geschäftslogik aus und reagiert damit auf die Bestätigung, wenn eine besonders wichtig Publikation heruntergeladen wurde.
using System; using iAnywhere.MobiLink.Script; namespace TestScripts { public class Test { DBConnectionContext _cc; public Test( DBConnectionContext cc ) { _cc = cc; } public void ConfirmDownload( string user, DateTime dt, string pubName ) { DBConnection conn = _cc.GetConnection(); DBCommand cmd = conn.CreateCommand(); cmd.CommandText = "INSERT INTO download_pubs_acked( rem_id, last_download, pub_name ) " + "VALUES( ?, ?, ? )"; cmd.Parameters[0] = _cc.GetRemoteID(); cmd.Parameters[1] = dt; cmd.Parameters[2] = pubName; cmd.ExecuteNonQuery(); } } } |
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2012, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.1 |