# Vector mit Daten aus der Datenbank füllen



## Dolce (15. Apr 2009)

Hallo Jungs, 

ne kurze Frage!

Ich hab mir einen Vector erzeugt namens "data1", 
jetzt will ich in diesen Vector Daten aus einer Datenbanktabelle
hineinlesen!
Ich hab ne eigene MySQL - Klasse, wo ich meine ganzen benötigten
SELECT - Anweisungen in verschiedenen Methoden ausführe!

Jetzt weiß ich nicht, wie ich die Daten in den Vector bekomme...!
Mit der Methode (add) geht es ja nicht, da ich darin keine Methoden schreiben kann
sondern nur Objekte übergeben kann!

Kann mir jemand helfen...?

Gruß und Danke


----------



## SlaterB (15. Apr 2009)

> Mit der Methode (add) geht es ja nicht, da ich darin keine Methoden schreiben kann
> sondern nur Objekte übergeben kann!

beschreibe, was du damit meinst,
vector.add(select * from ..);
ist natürlich kein zielführender Code,

wenn du dich dagegen an allgemeine bekannte grundsätzliche Vorgänge hälst, etwa
Statement = ..;
ResultSet = ...;
for (elemente in ResultSet) {
vector.add(paar daten);
}

dann sind zunächst keine fundamentalen Probleme sichtbar, muss natürlich alles erst korrekt programmiert werden,
JDBC-Tutorials helfen zum Umgang mit ResultSet & Co.


----------



## Dolce (15. Apr 2009)

ja, das versteht ich schon, 
moment, ich häng mal ein bißchen Code an...!

Ich hab hier ne MySQL - Klasse mit folgender Methode

```
public static void combolehrer ()
     {
       Connection conn = null;

       try
       {
        //Lade den JDBC Treiber:
        String driverName = "com.mysql.jdbc.Driver";
        Class.forName(driverName);

        //erstelle eine Verbindung zur Datenbank "schluesselprogramm"
        String serverName ="localhost";
        String mydatabase ="schluesselprogramm";

        //jetzt eine JDBC url:
        String url = "jdbc:mysql://" + serverName + "/" + mydatabase;
        String username = "root";
        String password = "";

        //jetzt verbinden:
        conn = DriverManager.getConnection(url, username, password);
        System.out.println("\nDatenbank " + mydatabase + " erfolgreich verbunden");
                 Statement stmt = conn.createStatement();
                 ResultSet rs = stmt.executeQuery("Select pname from pverz");
                 while ( rs.next() )
                 {
                   rs.getString(1);

                  }
                 stmt.close();


       }
        //und wenns nicht geklappt hat, 2 Gruende moeglich:
       catch (ClassNotFoundException e)
       {
         System.out.println("\nKann den Datenbanktreiber nicht finden\n");
       }
         catch (SQLException e)
       {
         System.out.println("\nKann die Datenbank nicht verbinden!\n");
       }

     }
```

So und nun hab ich noch ne grafische Oberfläche gebastelt, darin gibt es den Vector data1 und diesen Vector möchte ich mit den Daten der Methode "combolehrer" (Select pname frome pverz) füllen...!
Aber mir fehlt die zündende Idee.... :-(


```
public class Gesamtliste extends JFrame
{

  // Anfang Variablen
  private Vector data1 = new Vector();
  private JLabel jLabel1 = new JLabel();
  private String[] jList1Daten = {};
  private DefaultListModel defaultlist = new DefaultListModel();
  private JList jList1 = new JList(defaultlist);
  private JScrollPane listscroller = new JScrollPane(jList1);
  private String[] jComboBox1Daten = {};
  private JComboBox jComboBox1 = new JComboBox(jComboBox1Daten);
  private String[] jComboBox2Daten = {};
  private JComboBox jComboBox2 = new JComboBox(jComboBox2Daten);
  private String[] jComboBox3Daten = {};
  private JComboBox jComboBox3 = new JComboBox(jComboBox3Daten);
  private String[] jComboBox4Daten = {};
  private JComboBox jComboBox4 = new JComboBox(jComboBox4Daten);
  private JLabel jLabel2 = new JLabel();
  private JLabel jLabel3 = new JLabel();
  private JLabel jLabel4 = new JLabel();
  private JLabel jLabel5 = new JLabel();
  private JButton jButton1 = new JButton();
  private JButton jButton2 = new JButton();
  // Ende Variablen
```

Hier hab ich jetzt nicht alles rein kopiert, ist aber ja auch nicht notwendig...!

Vielen Dank und Gruß


----------



## SlaterB (15. Apr 2009)

in Zeile 27 steht
> rs.getString(1);
da wird ein String abgefragt, aber nichts damit gemacht,

hier könnte ein (anderer) Vector verwendet werden:
vec.add(rs.getString(1));
am Ende statt void diesen Vector zurückgeben,

wer immer die Methode combolehrer() aufruft, bekommt dann einen Vector von Strings zurück


----------



## Dolce (15. Apr 2009)

Perfekt, das könnte die Lösung sein...!

Ich werde es austesten...!
Danke schonmal....


----------



## Dolce (15. Apr 2009)

Eine Frage nochmal,

wie übergeb ich den Vector nochmal der Methode?
Hab jetzt den String in einen Vector geschrieben in der MySQL - Klasse, 
so jetzt muss ich diesen Vector aber übergeben, so dass er für ander Klassen 
verfügbar ist...
Klar ist, dass void raus muss...!

Einfach oben in die Klammern von combolehrer schreiben funzt nicht...1

Gruß


----------



## SlaterB (15. Apr 2009)

public static Vector combolehrer ()

Vector x = ..;

while .. {
x.add ..
}

return x;
}


----------



## Dolce (15. Apr 2009)

Perfekt..., 
vielen Dank für deine Tipps!

Funktioniert super, nur an der Formatierung muss ich noch arbeiten... 
Manchmal steht man einfach auf dem Schlauch....!

Aber zum Glück gibt es dann so Leute wie dich die einem 
so hilfreiche Tipps geben...!

Danke...


----------

