Datenbank auslesen in ein JText Field

sbrzeski

Grünschnabel
Hallo Leute...ich habe ein Problem und zwar möchte ich aus meiner Datenbank die Daten in meine vorgefertigte JText Field ausgeben, nur klappt das leider nicht.

Er liest zwar die Daten mit einer normalen System.out.println methode aus aber wie oben gesagt nicht in einem JText Field.

Code:
import java.awt.event.*; 
import java.awt.*; 
import javax.swing.*; 
import java.net.*; 
import java.sql.*; 


/************************************************ 
* Name: Bajdin Avdylaj                     * 
*                                              * 
* Datum: 27.09.2004                            * 
*                                              * 
* Klasse: R2H3                                 * 
*                                              * 
************************************************/ 
public class Testsql2 extends JFrame implements ActionListener { 

   static String land; 
   static int einw; 

   JButton button, button2; 
    
   public static void main(String[] args) { 
      new Testsql2( "Bankmanagement"); 
       
      String URL = "jdbc:odbc:Laender"; 
      String benutzername = "du"; 
      String passwort = "ich"; 
       
      try 
      { 
         Class.forName("sun.jdbc.odbc.JdbcOdbcDriver"); 
      } 
      catch(ClassNotFoundException cnfe) 
      { 
         System.out.println("Treiber kann nicht geladen werden: "+cnfe.getMessage()); 
      } 

      Statement befehl = null; 
      Connection verbindung = null; 
       
      try 
      { 
          
         verbindung = DriverManager.getConnection (URL, benutzername, passwort); 
          
         befehl = verbindung.createStatement(); 
          
      } 
       
      catch (Exception e) 
      { 
         System.err.println("Verbindungsfehler zu URL:"+URL+"fehlgeschlagen"); 
      } 

      try 
            { 
               ResultSet datenmenge; 
               datenmenge = befehl.executeQuery("SELECT * FROM bndlaender;"); 
       
       
            // Überschriften ausgeben 
            System.out.println("Bundesland\t Einw(in Mio)"); 
       
            // Einzelne Datensätze ausgeben 
       
             
       
            while(datenmenge.next()) 
            { 
               land = datenmenge.getString("Bundesland"); 
               einw = datenmenge.getInt("Einw(in Mio)"); 
               System.out.println(""+land+" "+einw); <---------------- Hier gehts ohne Probleme aber hier soll er es nicht ausgeben 
          
          
            } 
       
            verbindung.close(); 
       
       
            } 
            catch (Exception e) 
            { 
               e.printStackTrace(); 
          
            } 

    
   } 
    
   public Testsql2( String titel ) 
   { 
      super(titel); 
       
      this.setSize(1024,768); 
      this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
      erzeugeAnsicht(); 
      this.show(); 
       
   } 
    
       
    
   void erzeugeAnsicht() 
   { 
      this.getContentPane().setLayout(null); 
       
      JLabel ueberschrift =  new JLabel("Anmeldung"); 
      ueberschrift.setFont(new Font("Verdana", Font.PLAIN,20)); 
      ueberschrift.setBounds(10,10,150,50); 
       
      JLabel ueberschrift2 =  new JLabel("_____________________________________"); 
      ueberschrift2.setFont(new Font("Verdana", Font.PLAIN,20)); 
      ueberschrift2.setBounds(10,15,600,50); 
       
       
      JLabel kto =  new JLabel("Kontonummer:"); 
      kto.setFont(new Font("Verdana", Font.PLAIN,12)); 
      kto.setBounds(10,80,100,20); 
       
      JTextField text1 = new JTextField(land); <------------- Hier soll er die Daten ausgeben 
      text1.setBounds(110,80,100,20); 
          
       
      JLabel pin =  new JLabel("PIN Nummmer:"); 
      pin.setFont(new Font("Verdana", Font.PLAIN,12)); 
      pin.setBounds(10,120,100,20); 
       
      JPasswordField text2 = new JPasswordField(); 
      text2.setEchoChar('*'); 
      text2.setBounds(110,120,100,20); 
       
          
      button = new JButton("Neuen Account"); 
      button.setBounds(160,650,150,30); 
       
      button2 = new JButton("Login"); 
      button2.setBounds(10,650,150,30); 
       
      //JComboBox menu = new JComboBox(); 
      // menu.setBounds(10,150,100,30); 
       
      getContentPane().setBackground(new Color(255,230,150)); 
      this.getContentPane().add(ueberschrift); 
      this.getContentPane().add(ueberschrift2); 
      this.getContentPane().add(kto); 
      this.getContentPane().add(text1); 
      this.getContentPane().add(pin); 
      this.getContentPane().add(text2); 
      this.getContentPane().add(button); 
      this.getContentPane().add(button2); 
      //this.getContentPane().add(menu); 
       
      text2.addActionListener(this); 
      text1.addActionListener(this); 
      button.addActionListener(this); 
      button2.addActionListener(this); 
       
   } 
                
    
      public void actionPerformed(ActionEvent arg0) { 
          

      JButton j = (JButton)arg0.getSource(); 
      int erg, account; 
       
      if(j == button2) 
      { 
         erg = JOptionPane.showConfirmDialog(Testsql2.this, "Sind Sie sicher das sie sich einloggen möchten?", "Bestätigung", 
                                JOptionPane.YES_NO_OPTION, 
                                JOptionPane.QUESTION_MESSAGE); 
                                
          
             
         if( erg == JOptionPane.YES_OPTION) 
         { 
            new Kontenauswahl2( "Bankmanagement"); 
             
         } 
          
      } 
       
             
      else 
      { 
         account = JOptionPane.showConfirmDialog(Testsql2.this, "Sind Sie sicher das sie einen neuen Account anlegen möchten?", "Bestätigung", 
                                JOptionPane.YES_NO_OPTION, 
                                JOptionPane.QUESTION_MESSAGE); 
                                 
         if( account == JOptionPane.YES_OPTION) 
         { 
            new Account( "Bankmanagement"); 
         }                        
                                 
      } 
   } 
}


Ich hoffe ihr könnt mir helfen denn ich bin schon total verzweifelt :(

mfg
 
Es ist ganz einfach: die erzeugeAnsicht() Methode wird im Konstruktor der Klasse aufgerufen, zu dem Zeitpunkt ist die Variable land noch nicht initialisiert. Du musst das Instantiieren der Klasse Testsql2 ganz nach hinten in der main Methode verschieben. ;)
 
Außerdem scheint mir ein JTextField ungeeignet, um mehrere Daten anzuzeigen, vor allem in dieser Form. Eine JTextArea oder eine Tabelle scheinen mir hierfür passender zu sein.
 
Zurück