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 - Erste Orientierung » Praktische Einführungen in MobiLink » Praktische Einführung: Synchronisation mit Microsoft Excel

 

Lektion 4: Eine Java-Klasse mit direkter Zeilenbehandlung in MobiLink erstellen

In dieser Lektion verwenden Sie die direkte Zeilenbehandlung für die Verarbeitung von Zeilen in der OrderComments-Tabelle Ihrer Clientdatenbank. Sie fügen 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.xls.

  • SetDownload   Diese Methode verwenden Sie für das handle_DownloadData-Ereignis. SetDownload fragt die in der Excel-Tabelle order_central.xls 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).

♦  So erstellen Sie eine Java-Klasse für die direkte reine Download-Zeilenbehandlung
  1. Erstellen Sie eine Klasse namens MobiLinkOrders .

    Geben Sie den folgenden Code in einen Texteditor oder eine Entwicklungsumgebung ein.

    import ianywhere.ml.script.*;
    import java.io.*;
    import java.sql.*;
    
    public class MobiLinkOrders {
        // ...
    }
  2. Deklarieren Sie eine DBConnectionContext-Instanzvariable auf Klassenebene.

    DBConnectionContext _cc;

    Der MobiLink-Server übergibt eine DBConnectionContext-Instanz an Ihren Klassenkonstruktor. DBConnectionContext umfasst Informationen zur aktuellen Verbindung mit der konsolidierten MobiLink-Datenbank.

  3. Erstellen Sie Ihren Klassenkonstruktor.

    Ihr Klassenkonstruktor legt Ihre DBConnectionContext-Instanz auf Klassenebene fest.

    Geben Sie den folgenden Code in einen Texteditor oder eine Entwicklungsumgebung ein.

    public MobiLinkOrders( DBConnectionContext cc ) {
        _cc = cc;
    }
  4. Erstellen 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 Lektion 6: MobiLink-Client einrichten. Die UploadedTableData getInserts-Methode gibt eine Ergebnismenge für neue Bestellkommentare zurück.

    Geben Sie den folgenden Code in einen Texteditor oder eine Entwicklungsumgebung ein.

    //  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
          Statement st = con.createStatement();
          st.executeQuery( "insert into [order_sheet$]"
            + "(order_id, comment_id, order_comment) VALUES ("
            + Integer.toString(_orderID) + ", "
            + Integer.toString(_commentID) + ", '"
            + _specialComments + "')");
          
          st.close();
        }
        con.close();
      } catch(Exception ex) {
        System.err.print("Exception: ");
        System.err.println(ex.getMessage());
      }   
      insertResultSet.close();
    }
  5. Schreiben Sie die SetDownload-Methode:

    1. 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.

      Geben Sie den folgenden Code in einen Texteditor oder eine Entwicklungsumgebung ein.

      DownloadData download_d = _cc.getDownloadData();
      DownloadTableData download_td = download_d.getDownloadTableByName( "OrderComments" );
      Hinweis

      Die Erstellung dieser Tabelle in der entfernten Datenbank wird in Lektion 6: MobiLink-Client einrichten beschrieben.

    2. 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.

      Geben Sie den folgenden Code in einen Texteditor oder eine Entwicklungsumgebung ein.

      PreparedStatement download_upserts = download_td.getUpsertPreparedStatement();
    3. Legen Sie die Downloaddaten für jede Zeile fest.

      Das folgende Beispiel durchläuft die Tabelle order_central.xls und fügt dem MobiLink-Download Daten hinzu.

      Geben Sie den folgenden Code in einen Texteditor oder eine Entwicklungsumgebung ein.

      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());
      }
    4. Schließen Sie die vorbereitete Anweisung für das Hinzufügen von Einfüge- oder Aktualisierungsvorgängen zum Download.

      Geben Sie den folgenden Code in einen Texteditor oder eine Entwicklungsumgebung ein.

      download_upserts.close();
  6. Speichern Sie den Java-Code unter dem Namen MobiLinkOrders.java in Ihrem Arbeitsverzeichnis c:\MLobjexcel.

  7. Kompilieren Sie Ihre Klassendatei.

    1. Navigieren Sie zum Verzeichnis mit Ihren Java-Quelldateien.

    2. Kompilieren Sie MobiLinkOrders mit Referenzen zur API-Bibliothek des MobiLink-Servers für Java.

      Sie müssen mlscript.jar unter Installationsverzeichnis\Java referenzieren. Geben Sie die folgende Befehlszeile ein, um Ihre Java-Klasse zu kompilieren. Ersetzen Sie c:\Programme\SQL Anywhere 11\ durch Ihr SQL Anywhere 11-Verzeichnis:

      javac -classpath "c:\Programme\SQL Anywhere 11\java\mlscript.jar" MobiLinkOrders.java
Weitere Hinweise

Weitere Hinweise zur Synchronisationslogik finden Sie unter Synchronisationsskripten in Java erstellen.

Weitere Hinweise zur direkten Zeilenbehandlung finden Sie unter Direkte Zeilenbehandlung.


Vollständige MobiLinkOrders-Auflistung (Java)