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) » UltraLite® – Java-Programmierung » Praktische Einführung: Eine BlackBerry-Anwendung erstellen » Teil 1: Erstellen einer neuen BlackBerry-Anwendung

 

Lektion 5: Hinzufügen von Daten zur Tabelle

In dieser Lektion füllen Sie die UltraLite Java Edition-Datenbank, indem Sie Ihrer Anwendung mehrere Steuerelemente hinzufügen, den Code zum Einfügen von Daten in die Names-Tabelle implementieren, die Anwendung in einem Simulator ausführen und dann die Steuerelemente zum Eingeben von Daten verwenden.

Voraussetzungen

In dieser Lektion wird davon ausgegangen, dass Sie bereits alle vorherigen Lektionen abgeschlossen haben. Siehe Lektion 1: Einrichten eines neuen BlackBerry-Projekts.

 Aufgabe
  1. Aktualisieren Sie die HomeScreen-Klasse, um die Steuerelemente hinzuzufügen.

    Doppelklicken Sie auf HomeScreen.java im Fenster Package Explorer (Paket-Explorer) und fügen Sie den folgenden Code über der try-catch-Anweisung ein, die die getDataAccess-Methode aufruft.



            // Add an edit field for entering new names
            _nameEditField = new EditField( "Name: ", "", 50, EditField.USE_ALL_WIDTH );
            add (_nameEditField );
    
            // Add an ObjectListField for displaying a list of names
            _nameListField = new ObjectListField();
            add( _nameListField );
    
            // Add a menu item
            addMenuItem(_addToListMenuItem);
  2. Fügen Sie Deklarationen auf Klassenebene für _nameEditField und _nameListField hinzu und definieren Sie dann ein MenuItem-Objekt mit einer run-Methode (ist jetzt noch leer). Diese Deklarationen müssen bei den Deklarationen von _statusLabel und _da stehen.

    Fügen Sie den folgenden Code unter der private DataAccess _da;-Anweisung ein:

        private EditField _nameEditField;
        private ObjectListField _nameListField;
    
        private MenuItem _addToListMenuItem = new MenuItem("Add", 1, 1){
            public void run() {
                // TODO
            }
        };
  3. Fügen Sie eine neue Methode zur DataAccess-Klasse hinzu, die eine Zeile in eine Tabelle einfügt.

    Doppelklicken Sie auf DataAccess.java im Fenster Package Explorer (Paket-Explorer) und fügen Sie dann den folgenden Code nach der createDatabaseSchema-Methode ein:



        public void insertName(String name){
            try {
                UUIDValue nameID = _conn.createUUIDValue();
                String sql = "INSERT INTO Names(ID, Name) VALUES(?, ?)";           
                PreparedStatement ps = _conn.prepareStatement(sql);
                ps.set(1, nameID);
                ps.set(2, name);
                ps.execute();
                _conn.commit();
                ps.close();
            }
            catch(ULjException uex) {
                Dialog.alert("ULjException: " + uex.toString());
            }
            catch( Exception ex ){
                Dialog.alert("Exception: " + ex.toString());
            }  
        }
  4. Fügen Sie Ihrem Projekt eine NameRow-Klasse hinzu.

    1. Im Fenster Package Explorer (Paket-Explorer) erweitern Sie HelloBlackBerry und klicken Sie auf src.

    2. Klicken Sie auf File (Datei) » New (Neu) » Class (Klasse).

      Das Fenster New Java Class (Neu Java-Klasse) wird angezeigt.

    3. Im Feld Wie lautet der Name des Projekts? geben Sie NameRow ein.

    4. Klicken Sie auf Finish (Fertig stellen).

      Die Datei NameRow.java befindet sich in Ihrem Projekt im Fenster Package Explorer (Paket-Explorer).

  5. Aktualisieren Sie die NameRow-Klasse, sodass sie eine Zeile in der Names-Tabelle als Objekt speichern kann.

    Doppelklicken Sie auf NameRow.java im Fenster Package Explorer (Paket-Explorer) und ersetzen Sie dann den Code durch den folgenden Codeausschnitt:



    class NameRow {
        
        public NameRow( String nameID, String name ) {  
            _nameID = nameID;
            _name = name;
        }
        
        public String getNameID(){
            return _nameID;
        }
        
        public String getName(){
            return _name;
        }
           
        public String toString(){
            return _name;
        }
        
        private String _nameID;
        private String _name;
        
    }

    Die toString-Methode wird vom ObjectListField-Steuerelement verwendet.

  6. Fügen Sie eine neue Methode zur DataAccess-Klasse hinzu, die eine Zeile in einen Vektor von Objekten einliest.

    Doppelklicken Sie auf DataAccess.java im Fenster Package Explorer (Paket-Explorer) und fügen Sie dann den folgenden Code nach der insertName-Methode ein:



        public Vector getNameVector(){
            Vector nameVector = new Vector();
            try {
                String sql = "SELECT ID, Name FROM Names";
                PreparedStatement ps = _conn.prepareStatement(sql);
                ResultSet rs = ps.executeQuery();
                while (rs.next()) {
                    String nameID = rs.getString(1);
                    String name = rs.getString(2);
                    NameRow nr = new NameRow(nameID, name);
                    nameVector.addElement(nr);
                }
            }
            catch(ULjException uex) {
                Dialog.alert("ULjException: " + uex.toString());
            }
            catch(Exception ex) {
                Dialog.alert("Exception: " + ex.toString());
            }
            return nameVector;
        }
  7. Fügen Sie eine neue Methode zur HomeScreen-Klasse hinzu, die den Inhalt der auf dem Bildschirm angezeigten Liste aktualisiert.

    Doppelklicken Sie auf HomeScreen.java im Fenster Package Explorer (Paket-Explorer) und fügen Sie dann den folgenden Code nach der _addToListMenuItem-Methode ein:



        public void refreshNameList() {
            //Clear the list
            _nameListField.setSize(0);
    
            //Refill from the list of names
            Vector nameVector = _da.getNameVector();
            for( Enumeration e = nameVector.elements(); e.hasMoreElements(); ){
                NameRow nr = ( NameRow )e.nextElement();
                _nameListField.insert(0, nr);
            }
        }
  8. Aktualisieren Sie die HomeScreen-Klasse, sodass sie die refreshNameList-Methode aufruft, wodurch sichergestellt wird, dass die Liste beim Starten der Anwendung gefüllt wird.

    Fügen Sie den folgenden Code vor dem Ende des HomeScreen-Konstruktors ein:

            // Fill the ObjectListField
            refreshNameList();
  9. Fügen Sie eine neue Methode zur HomeScreen-Klasse hinzu, die eine Zeile in die Liste auf dem Bildschirm einfügt.

    Fügen Sie den folgenden Code nach der refreshNameList-Methode ein:

        private void onAddToList(){
            String name = _nameEditField.getText();
            _da.insertName(name);
            this.refreshNameList();
            _nameEditField.setText("");
            _statusLabel.setText(name + " added to list");
        }
  10. Aktualisieren Sie die run-Methode in der HomeScreen-Klasse, sodass sie die onAddToList-Methode aufruft.

    Ersetzen Sie die Zeile des Codes, die \\ TODO mit dem folgenden Codeausschnitt angibt:

                onAddToList();
  11. Klicken Sie auf File (Datei) » Save All (Alle speichern).

  12. Führen Sie den Simulator aus, um zu überprüfen, dass die Anwendung kompiliert und ausgeführt wird.

    Klicken Sie im Fenster Package Explorer (Paket-Explorer) auf Application.java und anschließend auf Run (Ausführen) » Run As (Ausführen als) » BlackBerry-Simulator.

    Hinweis

    Wenn mehrere Projekte in Ihrem Arbeitsbereich geöffnet sind, klicken Sie auf Run (Ausführen) » Run Configurations (Konfigurationen ausführen), wählen Sie HelloBlackBerry aus und klicken Sie anschließend auf Run (Ausführen).

    Das HelloBlackBerry-Projekt wird kompiliert. Daraufhin wird das Simulator-Fenster angezeigt.

    Vergewissern Sie sich, dass das Projekt ohne Fehler kompiliert wird, indem Sie die Registerkarte Problems (Probleme) in Eclipse auswählen.

  13. Klicken Sie im Simulator-Menü auf File (Datei) » Load Java Program (Java-Programm laden).

  14. Navigieren Sie zum Verzeichnis \UltraLite\UltraLiteJ\BlackBerry4.2\ Ihrer SQL Anywhere-Installation und öffnen Sie die Datei UltraLiteJ16.cod.

    Hinweis

    Gegebenenfalls müssen Sie UltraLiteJ16.cod und die DBG-Dateien in das Verzeichnis des Arbeitssimulators (z.B. C:\Eclipse\plugins\net.rim.ejde.componentpack6.0.0_6.0.0.0.26\components\simulator\) kopieren, um die Anwendung auszuführen. Wenn die Dateien kopiert wurden, brauchen Sie das Java-Programm nicht über das Simulator-Menü zu laden.

  15. Klicken Sie im Simulator-Menü auf Simulate (Simulieren) » Set IT Policy (IT-Richtlinie einrichten).

    Das Fenster Set IT Policy (IT-Richtlinie einrichten) wird angezeigt.

  16. Klicken Sie im Feld Policy (Richtlinie) auf Allow Third Party Apps To Use Persistent Store (Anwendungen von Drittanbietern die Verwendung des beständigen Speichers erlauben) » >>.

  17. Klicken Sie auf Set (Einstellen) und dann auf Close (Schließen).

  18. Starten Sie Ihre Anwendung.

    Im Simulator-Fenster navigieren Sie zu Downloads und führen dann die HelloBlackBerry-Anwendung aus.

    Ein Bildschirm mit der Hello BlackBerry-Titelleiste, dem Status: Connected-Text und einem Name-Feld wird geöffnet.

  19. Im name-Feld geben Sie John Smith ein.

  20. Klicken Sie auf *EMPTY* und wählen Sie dann Add.

    John Smith wird in der Liste angezeigt, was darauf hinweist, dass der Namenseintrag der Names-Tabelle in der Datenbank hinzugefügt wurde.

    Namen werden in der Datenbank gespeichert, während Sie sie hinzufügen. Sie werden aus der Datenbank abgerufen werden und der Liste hinzugefügt, wenn Sie die Anwendung schließen und erneut öffnen.

  21. Halten Sie die Simulation an.

    Klicken Sie im Simulator-Fenster auf File (Datei) » Exit (Beenden).

Ergebnisse

Die eingegebenen Daten werden in die Names-Tabelle in der UltraLite Java Edition-Datenbank eingefügt.