In dieser Lektion verwenden Sie die direkte Zeilenbehandlung für die Verarbeitung von Zeilen in der OrderComments-Tabelle Ihrer Clientdatenbank.
Voraussetzungen
In dieser Lektion wird davon ausgegangen, dass Sie bereits alle vorherigen Lektionen abgeschlossen haben. Siehe Lektion 1: Einrichten einer Excel-Tabelle.
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: Synchronisation mit Microsoft Excel.
Kontext und Bemerkungen
In dieser Lektion fügen Sie die folgende Methode für die direkte Zeilenbehandlung hinzu:
GetUpload Diese Methode verwenden Sie für das handle_UploadData-Ereignis. GetUpload schreibt hochgeladene Kommentare in die Excel-Tabelle order_central.xlsx.
SetDownload Diese Methode verwenden Sie für das handle_DownloadData-Ereignis. SetDownload fragt die in der Excel-Tabelle order_central.xlsx gespeicherten Daten ab und sendet sie an entfernte Clients.
Mit dem nachfolgenden Verfahren können Sie eine Java-Klasse inklusive Ihrer Methoden für die Prozessverarbeitung erstellen. Eine vollständige Auflistung finden Sie unter Vollständige MobiLinkOrders-Auflistung (Java).
Schreiben Sie eine neue Klasse mit dem Namen MobiLinkOrders.
Schreiben Sie den folgenden Programmcode:
import ianywhere.ml.script.*; import java.io.*; import java.sql.*; public class MobiLinkOrders { |
Deklarieren Sie eine DBConnectionContext-Instanzvariable auf Klassenebene.
Fügen Sie den folgenden Code hinzu:
// Class level DBConnectionContext DBConnectionContext _cc; |
Der MobiLink-Server übergibt eine DBConnectionContext-Instanz an Ihren Klassenkonstruktor. DBConnectionContext umfasst Informationen zur aktuellen Verbindung mit der konsolidierten MobiLink-Datenbank.
Erstellen Sie Ihren Klassenkonstruktor.
Ihr Klassenkonstruktor legt Ihre DBConnectionContext-Instanz auf Klassenebene fest.
Fügen Sie den folgenden Code hinzu:
public MobiLinkOrders( DBConnectionContext cc ) throws IOException, FileNotFoundException { // Declare a class-level DBConnectionContext _cc = cc; } |
Schreiben Sie die GetUpload-Methode.
Die GetUpload-Methode ruft eine UploadedTableData-Klasseninstanz ab, die die OrderComments-Tabelle darstellt. Die OrderComments-Tabelle enthält spezielle Kommentare von entfernten Vertriebsmitarbeitern. Sie erstellen diese Tabelle in einer späteren Lektion.
Die UploadedTableData getInserts-Methode gibt eine Ergebnismenge für neue Bestellkommentare zurück.
Fügen Sie den folgenden Code hinzu:
// Method for the handle_UploadData synchronization event public void GetUpload( UploadData ut ) throws SQLException, IOException { // Get an UploadedTableData for OrderComments UploadedTableData orderCommentsTbl = ut.getUploadedTableByName("OrderComments"); // Get inserts uploaded by the MobiLink client ResultSet insertResultSet = orderCommentsTbl.getInserts(); try { // Connect to the excel worksheet through ODBC Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con = DriverManager.getConnection( "jdbc:odbc:excel_datasource" ); while( insertResultSet.next() ) { // Get order comments int _commentID = insertResultSet.getInt("comment_id"); int _orderID = insertResultSet.getInt("order_id"); String _specialComments = insertResultSet.getString("order_comment"); // Execute an insert statement to add the order comment to the worksheet PreparedStatement st = con.prepareStatement("INSERT INTO [order_sheet$]" + "(order_id, comment_id, order_comment) VALUES (?,?,?)" ); st.setString( 1, Integer.toString(_orderID) ); st.setString( 2, Integer.toString(_commentID) ); st.setString( 3, _specialComments ); st.executeUpdate(); st.close(); } con.close(); } catch(Exception ex) { System.err.print("Exception: "); System.err.println(ex.getMessage()); } finally { insertResultSet.close(); } } |
Erstellen Sie die SetDownload-Methode:
Rufen Sie eine Klasseninstanz ab, die die OrderComments-Tabelle darstellt.
Verwenden Sie die DBConnectionContext getDownloadData-Methode, um eine DownloadData-Instanz zu erhalten. Verwenden Sie die DownloadData getDownloadTableByName-Methode zur Rückgabe einer DownloadTableData-Instanz für die OrderComments-Tabelle.
Fügen Sie den folgenden Code hinzu:
public void SetDownload() throws SQLException, IOException { DownloadData download_d = _cc.getDownloadData(); DownloadTableData download_td = download_d.getDownloadTableByName( "OrderComments" ); |
Die Erstellung dieser Tabelle in der entfernten Datenbank wird in Lektion 7: Einrichten der konsolidierten MobiLink-Clientdatenbank beschrieben.
Rufen Sie eine vorbereitete Anweisung auf, die Ihnen das Hinzufügen von Einfüge- oder Aktualisierungsvorgängen zum Download ermöglicht.
Verwenden Sie die DownloadTableData getUpsertPreparedStatement-Methode, um eine java.sql.PreparedStatement-Instanz zurückzugeben.
Fügen Sie den folgenden Code hinzu:
// Prepared statement to compile upserts (inserts or updates). PreparedStatement download_upserts = download_td.getUpsertPreparedStatement(); |
Legen Sie die Downloaddaten für jede Zeile fest.
Der folgende Code durchläuft die Tabelle order_central.xlsx und fügt dem MobiLink-Download Daten hinzu.
Fügen Sie den folgenden Code hinzu:
try { // Connect to the excel worksheet through ODBC Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); Connection con = DriverManager.getConnection( "jdbc:odbc:excel_datasource" ); // Retrieve all the rows in the worksheet Statement st = con.createStatement(); ResultSet Excel_rs = st.executeQuery( "select * from [order_sheet$]" ); while (Excel_rs.next()) { // Retrieve the row data int Excel_comment_id = Excel_rs.getInt(1); int Excel_order_id = Excel_rs.getInt(2); String Excel_comment = Excel_rs.getString(3); // Add the Excel data to the MobiLink download. download_upserts.setInt( 1, Excel_comment_id ); download_upserts.setInt( 2, Excel_order_id ); download_upserts.setString( 3, Excel_comment ); download_upserts.executeUpdate(); } // Close the excel result set, statement, and connection. Excel_rs.close(); st.close(); con.close(); } catch (Exception ex) { System.err.print("Exception: "); System.err.println(ex.getMessage()); } |
Schließen Sie die vorbereitete Anweisung, die für das Hinzufügen oder Aktualisieren im Download verwendet wurde, beenden Sie die Methode und die Klasse.
Fügen Sie den folgenden Code hinzu:
finally { download_upserts.close(); } } } |
Speichern Sie den Java-Code unter dem Namen MobiLinkOrders.java in Ihrem Arbeitsverzeichnis c:\MLobjexcel.
Hinweise zur Überprügung des Codes in MobiLinkOrders.java finden Sie unter Vollständige MobiLinkOrders-Auflistung (Java).
Kompilieren Sie Ihre Klassendatei.
Navigieren Sie zum Verzeichnis mit Ihren Java-Quelldateien.
Kompilieren Sie MobiLinkOrders mit Referenzen zur MobiLink-Server-API-Bibliothek für Java.
Sie müssen mlscript.jar (in %SQLANY16%\Java) referenzieren.
Führen Sie den folgenden Befehl aus, wobei Sie C:\Program Files\SQL Anywhere 16\ durch Ihr SQL Anywhere 16-Verzeichnis ersetzen:
javac -classpath "C:\Program Files\SQL Anywhere 16\java\mlscript.jar" MobiLinkOrders.java |
Vollständige MobiLinkOrders-Auflistung (Java)
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2013, SAP AG oder ein SAP-Konzernunternehmen. - SAP Sybase SQL Anywhere 16.0 |