Problem:sql ResultSet und java Vectoren

maikmaik

Grünschnabel
Hallo,

ich habe Probleme beim Einlesen von Daten aus einem ResultSet in von mir angelegte Vectoren col(für Spaltenwerte) und row (für Zeilenwerte). Das Problem konzentriert sich auf folgende Zeilen aus meinem Code:
Code:
//Spaltennamen ausgeben über RESULTSET
    System.out.println("Ausgabe normal ueber Resultset:"); 
    for (int i=1; i<= spaltenzahl; ++i)
    {
    System.out.print (meta_daten.getColumnName(i) + "\t");
     //Vector col für Spalten:Ausgabe folgt unten   
    col.add(meta_daten.getColumnName(i)); //für Spaltennamen
    }
[...]  
while (ergebnis.next())
    {
      for (int i=1; i<= spaltenzahl; ++i)
      //Alle Typen in String konvertieren
      System.out.print(ergebnis.getString(i) + "\t");
     row.add(ergebnis.getString(i)); //für Zeilenwerte
  }

//Ausgabe der Vectoren
//Ziel: soll so aussehen wie bei ResultSet Ausgabe ohne Vectoren
         System.out.println("Ausgabe der beiden Vektoren: col und row");    
         System.out.println("");
         System.out.println("Ausgabe aus Vector: mit "+col.size()+ " Spalten "+ row.size()+" Zeilen mit je 2 Elementen ");   
         for (int i=0; i!=col.size() && i!= row.size();++i)
         {
           System.out.println (col.get(i)+" "+ row.get(i));
         }
Eingelesen werden nur die Spaltennamen in col aber ausgeben lassen sich sich nicht. Die Zeilenwerte werden nicht eingelesen.

Was mache ich falsch beim Umgang mit Vectoren? Kann mir bitte jemand helfen?

Gruß Maik



Code:
//DBneu.java

import  java.sql.*;
import  java.util.Vector;

public class DBneu 
{

 public static void main (String args[])
 {
   
   String sql = "SELECT * FROM namen";
   //Vector in den die namen reinkommen sollen
    Vector col = new Vector(); //Vektor für Spaltennamen
    Vector row = new Vector(); //Vektor für Zeilen
    Vector vec =new Vector();
   try
   {
   Class.forName( "xxx" );	
    String urldb2 ="xxx:person";
    String userid ="xxx";
    String passwd ="xxx";
    
    Connection verbindung;
    Statement stmt;
    verbindung = DriverManager.getConnection( urldb, userid, passwd );
    System.out.println("Verbindung zur Datenbank PERSON wird hergestellt.Bitte Warten ...\n");
    stmt = verbindung.createStatement();
    
    //SQL Anweisungsobjekt erzeugen
    //Statement stmt = verbindung.createStatement();
    
    ResultSet ergebnis = null;
    
    //SQL ANweisung ausführen:
    ergebnis = stmt.executeQuery(sql);
    
    System.out.println("Treiber registriert. SQL Anweisung wird ausgeführt.");
    System.out.println("\n\n\n\n\n");
    
    //Metadaten über Tabelle person abfragen
    ResultSetMetaData meta_daten = ergebnis.getMetaData();
    
    int spaltenzahl = meta_daten.getColumnCount();
    
    //Spaltennamen ausgeben über RESULTSET
    System.out.println("Ausgabe normal ueber Resultset:"); 
    for (int i=1; i<= spaltenzahl; ++i)
    {
    System.out.print (meta_daten.getColumnName(i) + "\t");
     //Vector col für Spalten:Ausgabe folgt unten   
    col.add(meta_daten.getColumnName(i));
    }
     System.out.println("");
    //SpaltenDatentypwerttypen ausgeben
     for (int i=1; i<= spaltenzahl; ++i)
    {
    System.out.print (meta_daten.getColumnTypeName(i) + "\t");
    //System.out.println("");
    }    
     System.out.println("");
    //Ausgabe der Tabellenwerte mit .getString() von RESULTSET
    
    while (ergebnis.next())
    {
      for (int i=1; i<= spaltenzahl; ++i)
      //Alle Typen in String konvertieren
      System.out.print(ergebnis.getString(i) + "\t");
     row.add(ergebnis.getString(i));
      
      //JETZT NEU: Einlesen von Spaltennamen und Zeileninhalt in 
    	  //vec.add(ergebnis.getObject(i));
    	 // vec.addElement(ergebnis.getString(i));
    	// vec.add(ergebnis.getString("vorname"));
    	// row.add(ergebnis.getString("name"));
    	 System.out.println("");
    }	  
    	      
    //Ausgabe der Vectoren
         System.out.println("Ausgabe der beiden Vektoren: col und row");    
         System.out.println("");
         System.out.println("Ausgabe aus Vector: mit "+col.size()+ " Spalten "+ row.size()+" Zeilen mit je 2 Elementen ");   
         for (int i=0; i!=col.size() && i!= row.size();++i)
         {
           System.out.println (col.get(i)+" "+ row.get(i));
         }
    
    
    //Ergebnistabelle schließen
    
    ergebnis.close();
    
    //Statement schließen
    stmt.close();
    
    //Verbindung schließen
    verbindung.close();
    
  }//Ende try
  catch (Exception e){
    e.printStackTrace();
  }//Ende catch

 }//Ende main
} //Ende class
 
Zuletzt bearbeitet von einem Moderator:
Hallo!

Ich glaub, du hast bloss eine Klammerung vergessen

Code:
while (ergebnis.next())  {
      for (int i=1; i<= spaltenzahl; ++i)
      System.out.print(ergebnis.getString(i) + "\t");
     row.add(ergebnis.getString(i)); //für Zeilenwerte
  }

da wird in der Schleife natürlich nur der System.out.print() ausgeführt. Probier mal folgendes:

Code:
while (ergebnis.next())  {
     for (int i=1; i<= spaltenzahl; ++i){
       System.out.println(ergebnis.getString(i));
       row.add(ergebnis.getString(i)); 
     }
}

Grüsse TrueSun
 
Zurück