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) » UltraLiteJ » UltraLiteJ verwenden » Praktische Einführung: Eine BlackBerry-Anwendung erstellen » Teil 1: UltraLiteJ-Anwendung auf BlackBerry erstellen

 

Lektion 5: Daten der Tabelle hinzufügen

In dieser Lektion fügen Sie die folgenden Steuerelemente dem Bildschirm hinzu:

Sie können anschließend Code hinzufügen, um den Namen in das Textfeld einzufügen und die Liste zu aktualisieren.

  1. Fügen Sie die Steuerelemente dem Bildschirm hinzu.

    1. Fügen Sie den folgenden Code hinzu, bevor Sie die getDataAccess-Methode aufrufen.

      // 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);
                      
      // Create database and connect
      try{
          _da = DataAccess.getDataAccess();
    2. Fügen Sie Deklarationen der Klassenebene für _nameEditField und _nameListField hinzu. Legen Sie auch ein MenuItem-Objekt _addToListMenuItem mit einer run-Methode fest (derzeit noch leer). Diese Deklarationen müssen neben den Deklarationen von _statusLabel und _da stehen.

      private EditField _nameEditField;
      private ObjectListField _nameListField;
      
      private MenuItem _addToListMenuItem = new MenuItem("Add", 1, 1){
          public void run() {
              // TODO
          }
      };
    3. Neukompilieren Sie die Anwendung und überprüfen Sie, dass sie läuft.

  2. Fügen Sie Ihrer Anwendung die folgenden Methoden und Objekte hinzu:

    • Eine DataAccess-Methode, um in eine Tabelle eine Zeile einzufügen
    • Ein Objekt, um eine Zeile der Names-Tabelle als Objekt aufzunehmen
    • Eine DataAccess-Methode, um die Zeilen aus einer Tabelle in einen Objektvektor einzulesen
    • Eine Methode, um den Inhalt der Liste zu aktualisieren, die auf dem HomeScreen angezeigt wird
    • Eine Methode, um einen Eintrag der Liste auf dem HomeScreen hinzuzufügen.
    1. Fügen Sie die DataAccess-Methode hinzu, um in eine Tabelle eine Zeile einzufügen

      public void insertName( String name ){
          try{
              Value 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();
          }
          catch( ULjException uex ){
              System.out.println( "ULjException: " + uex.toString() );
          }
          catch( Exception ex ){
              System.out.println( "Exception: " + ex.toString() );
          }  
      }
    2. Fügen Sie die Klasse hinzu, die eine Zeile der Names-Tabelle enthält. Die toString-Methode wird vom ObjectListField-Steuerelement verwendet.

      package myapp;
      
      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;
          
      }
    3. Fügen Sie die DataAccess-Methode hinzu, um die Zeilen aus der Tabelle in einen Objektvektor einzulesen:

      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 ){
              System.out.println( "ULjException: " + uex.toString() );
          }
          catch( Exception ex ){
              System.out.println( "Exception: " + ex.toString() );
          }
          finally{
              return nameVector;
          }
      }
    4. Fügen Sie die Benutzerschnittstellen-Methoden der HomeScreen-Klasse hinzu. Es folgt die Methode zum Aktualisieren der Namensliste:

      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);
          }
      }
    5. Rufen Sie die refreshNameList-Methode vor dem Ende des HomeScreen-Konstruktors auf, damit die Liste gefüllt ist, wenn die Anwendung startet.

      // Fill the ObjectListField
      this.refreshNameList();
    6. Fügen Sie eine HomeScreen-Methode hinzu, die verwendet wird, um der Liste eine Zeile hinzuzufügen:

      private void onAddToList(){
          _da.insertName(_nameEditField.getText());
          this.refreshNameList();
          _nameEditField.setText("");
      }
    7. Rufen Sie diese Methode innerhalb der run-Methode des MenuItem-Objekts _addToListMenuItem auf (das derzeit //TODO anzeigt):

      public void run() {
          onAddToList();
      }
  3. Kompilieren Sie die Anwendung und führen Sie sie aus.

Den Simulator zurücksetzen

Wenn Sie den Simulator in einen bereinigten Status zurücksetzen müssen, wählen Sie Erase Simulator File (Simulatordatei löschen) im BlackBerry JDE-Menü File (Datei) (und nicht im Menü Simulator) und löschen Sie die Elemente im Untermenü. Wenn Sie den Simulator auf diese Weise zurücksetzen, müssen Sie die UltraLiteJ.cod-Datei erneut importieren, bevor Sie Ihre Anwendung wieder ausführen.