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: Synchronisation mit Microsoft Excel

 

Lektion 5: Erstellen einer Java-Klasse mit direkter Zeilenbehandlung in MobiLink

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

 Aufgabe
  1. 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 {
    
  2. 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.

  3. 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;
        }
    
  4. 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();
    	}
        }
  5. Erstellen 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.

      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" );
      Hinweis

      Die Erstellung dieser Tabelle in der entfernten Datenbank wird in Lektion 7: Einrichten der konsolidierten MobiLink-Clientdatenbank 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.

      Fügen Sie den folgenden Code hinzu:

              // Prepared statement to compile upserts (inserts or updates).
              PreparedStatement download_upserts = download_td.getUpsertPreparedStatement();
    3. 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());
              } 
      
    4. 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();
      	}
          }
      }
  6. 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).

  7. Kompilieren Sie Ihre Klassendatei.

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

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

Ergebnisse

Zeilen in der OrderComments-Tabelle Ihrer Clientdatenbank werden aktualisiert.

Nächste Schritte

Gehen Sie weiter zu Lektion 6: Starten des MobiLink-Servers.

 Siehe auch

Vollständige MobiLinkOrders-Auflistung (Java)