result ausgabe in Html Tabelle

Status
Nicht offen für weitere Antworten.

David_Ilm

Mitglied
Habe ein Bean welches mir Werte aus einer Datenbank liefert das bean sieht so aus

Code:
public static ArrayList ColumnValues(String selecteddb,String selectedtable,String columnname)throws java.sql.SQLException,java.lang.ClassNotFoundException
  {
   ArrayList columnvalues = new ArrayList();
   Verb check1 = new Verb();
   check1.setDbName(selecteddb);

   String sql = ("SELECT *FROM " + selectedtable);
        
        Connection    cn = Verb.getCon();
        java.sql.Statement oStatement = cn.createStatement();
        ResultSet oResultSet = oStatement.executeQuery(sql);

         while(oResultSet.next())
         { 
		 String result=oResultSet.getString(columnname);
         columnvalues.add(result);
         }
    return columnvalues;
  }

Also ich schicke von meiner Jsp aus den namen der Datenbank den Namen Tabelle und den Namen der Spalte.
Zurück bekomme ich den Inhalt der Spalte funktioniert auch alles.

Nun liegt mein Problem aber in der darstellung in der Jsp wenn ich eine Datenbanktabelle habe zum
Beispiel:

Spalte1 | Spalte2 | Spalte3
A | B | C
D | E | G

Die Anzahl der Splaten kann natürlich auch varieieren nun ruf ich wie in diesem 3mal mein bean auf und hole mir die Werte
Nun möchte ich sie gerne in eine Table anzeigen nun ist es aber so das Tabellen nur zeileweiße Füllen kann und ich bekomm die Werte ja Spaltenweiße.


An der stelle scheitert es gerade bei mir kann mir jemand weiterhelfen wie ich mein Problem am besten löse.
 

bambi

Bekanntes Mitglied
Wenn Du Dir die Daten in einer ArrayList zurueckgeben laesst, dann duerfte das doch gar kein Problem sein. Du fuehrst
zuerst alle Deine Abfragen an die DB aus - so lange bis Du alle Spalten hast. Die ArrayLists solltest Du dann vielleicht
noch in einem Array (oder in einer 2ten ArrayList) speichern oder so...
Dann kannst Du alle Deine Daten in 2 for-Schleifen durchlaufen - dann ist's aber vielleicht besser anstatt Deiner
ArraysList lieber Arrays zu verwenden, wenn's funktioniert... Dann ist der Zugriff auf jeden Fall einfacher.
Ich wuerde mir an Deiner Stelle den Namen der Funktion noch einmal ansehen. Sog. "sprechende Methodennamen" sind
meistens viel einfacher in der Handhabung... :wink:
 

David_Ilm

Mitglied
Erstmal danke bambi auf diesen Gedanken bin ich noch garnicht bekommen also würde mein array dann so Ungefähr aussehe

Array[0]=ArrayListSpalte1
Array[1]=ArrayListSpalte2
Array[2]=ArrayListSpalte3

wenn es möglich ist mehrere ArrayListen in einem Array zu Speichern wäre es ne möglichkeit nur weiß noch nicht so richtig wie ich dann wieder an die Werte komme.

Ausgabe von einem Array bzw. ArrayLIst ist klar
Bsp.:
Code:
out.println(Array[0]);
Aber wie mache ich es wenn darin noch eine arraylist steckt ????
 

bambi

Bekanntes Mitglied
Also ich habe hier mal was zusammengeschrieben... Nur als Beispiel wie's gehen koennte verwenden. Ist nicht so toll...
Code:
ArrayList tmpArrayList = new ArrayList();

// die Laenge aller ArrayList muss gleich sein...
int len = 4;
int arrayLen = allValues.length;

System.out.println("printing the DB values...");
for (int i = 0; i < len; i++)
{
    System.out.print(i + ": ");
    for (int j = 0; j < arrayLen; j++)
    {
        tmpArrayList = allValues[j];
        if (tmpArrayList != null)
        {
            String value = (String) tmpArrayList.get(i);
            if (value != null)
                System.out.print(value + "\t");
            else
                System.out.print("\t");
            
        }
    }
    System.out.println();
}

Also ich habe ein Array allValues, das die ArrayLists enthaelt. Im ersten for geht man dann die Laenge der ArrayLists durch.
In dem Beispiel hier muessen alle die gleiche Laenge haben - wenn Du's anders brauchst, dann musst Du's noch etwas
umschreiben... Danach geh' ich dann das Array durch und gebe alle Daten aus...

Hier mal der ganze Code - falls Du's kurz testen magst...
Code:
public class Test
{

    ArrayList[] allValues = new ArrayList[10];
    
    /**
     * 
     */
    public Test()
    {
        init();
    }
    
    private void init()
    {
        ArrayList arrayList = new ArrayList();
        arrayList.add("eins");
        arrayList.add("zwei");
        arrayList.add("drei");
        arrayList.add(null);
        
        allValues[0] = arrayList;
        
        arrayList = new ArrayList();
        arrayList.add("vier");
        arrayList.add("fuenf");
        arrayList.add("sechs");
        arrayList.add("sieben");
        
        allValues[1] = arrayList;
    }
    
    public void printValues()
    {
     .......
    }
    
    public static void main(String[] args)
    {
        Test t = new Test();
        t.printValues();
    }

}

Ich kann mir aber nicht so vorstellen, dass das Ganze performant ist. Da musst Du vielleicht noch was mit den Methoden machen...
 
D

David_Ilmm

Gast
Habe es mal ausprobiert und bei mir eingebaut hier ist mal der Code:

Code:
if(action.equals("ShowTable"))
 {
    MetaDaten metabean = new MetaDaten();
    ArrayList metadaten=(metabean.TableName(selecteddb,selectedtable));
    int len= metadaten.size();    
   ArrayList[] allValues= new ArrayList[len]; 

    for(int h=0;h<len;h++)
      {
       String columnname = (metadaten.get(h)).toString(); 
       allValues[h]=(bean.ColumnValues(selecteddb,selectedtable,columnname));
      } 
    
    
    ArrayList tmpArrayList = new ArrayList(); 
        
    int arrayLen = allValues.length; 

    for (int i = 0; i < len; i++) 
     { 
      out.println(i + ": "); 
      for (int j = 0; j < arrayLen; j++) 
      { 
        tmpArrayList = allValues[j]; 
        if (tmpArrayList != null) 
        { 
            String value = (String) tmpArrayList.get(i); 
            if (value != null) 
                out.print(value + "\t"); 
            else 
                out.print("\t"); 
         } 
      } 
     }

Nur leider ist das resultat daraus eine Exeption

IndexOutOfBoundsException: Index: 2, Size: 2
 
D

David_Ilmm

Gast
Muß mich mal etwas berichtigen bei manchen Tabellen geht es bei anderen wiederrum nicht
 
D

David_Ilmm

Gast
Also es kommt anscheinend nur wenn ich auf die mysql Tabellen zugreifen will,
bei allen anderen geht es bis jetzt hab aber auch alle rechte an der Datenbank da ich mich als root anmelden kann.

Hier mal die Komplette Fehlermeldung

org.apache.jasper.JasperException: Index: 2, Size: 2
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:373)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)


root cause

java.lang.IndexOutOfBoundsException: Index: 2, Size: 2
java.util.ArrayList.RangeCheck(Unknown Source)
java.util.ArrayList.get(Unknown Source)
org.apache.jsp.mainframe_jsp._jspService(org.apache.jsp.mainframe_jsp:149)
org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:99)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:325)
org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:295)
org.apache.jasper.servlet.JspServlet.service(JspServlet.java:245)
javax.servlet.http.HttpServlet.service(HttpServlet.java:802)
 
D

David_Ilmm

Gast
Hab jetzt mal noch etwas rumprobiert bin zu Folgendem Ergebniss gekommen
Der fehler taucht genau dann auf wenn die wenn weniger Werte als Spalten sind

Also die Variable Len kleiner ist als die Anzahl der Spalten.
 

bambi

Bekanntes Mitglied
Okay, hab' den Fehler zumindest reproduzieren koennen. Es passiert irgendwo in der doppelten for-Schleife. Du
verwendest das len irgendwo, wo's gar nichts zu suchen hat. Dann bekommst Du immer den Fehler, wenn in den
Spalten (hier in den ArrayLists) weniger Eintraege sind, als Du ArrayLists hast... Also wenn soz. die Laenge Deiner
ArrayLists kuerzer ist, als die Laenge Deines Arrays.

Ausserdem: die Ausgabe ist eh nicht korrekt. Wenn Du mehr Elemente in Deinem Array hast, als Listen, dann wird zu
wenig ausgegeben...

Aehmmm bloed zu erklaeren... :?
 

bambi

Bekanntes Mitglied
Hmmm... hab' da mal wieder was gebastelt... (ja, mir iss immer noch langweilig)

Code:
ArrayList[] allValues;
    int[] allSizes;
    
    private void getValues()
    {
        ArrayList tmpArrayList = new ArrayList();

		// die Laenge aller ArrayList muss gleich sein...
		 int len = getMaxLen();
		 int arrayLen = allValues.length;
		
		 System.out.println("printing the DB values...");
		 for (int i = 0; i < len; i++)
		 {
		     System.out.print(i + ": ");
		     for (int j = 0; j < arrayLen; j++)
		     {
		         tmpArrayList = allValues[j];
		         if (tmpArrayList != null && i < allSizes[j])
		         {
		             String value = (String) tmpArrayList.get(i);
		             if (value != null)
		                 System.out.print(value + "\t");
		             else
		                 System.out.print("\t");
		            
		         }
		     }
		     System.out.println();
		 }
     }
    
    private int getMaxLen() {
        int maximum = 0;
        int len = allValues.length;
        
        for (int i = 0, tmp = 0; i < len; i++) {
            tmp = this.allValues[i].size();
            allSizes[i] = tmp;
            
            if (tmp > maximum)
                maximum = tmp;
        }
        return maximum;
    }

Also das gibt mir dann mit
Code:
private void init()
    {
        allValues= new ArrayList[2];
        allSizes= new int[2];
        
        ArrayList list = new ArrayList();
        list.add("a");
        list.add("b");
        list.add("c");
        list.add("d");
        allValues[0] = list;
        
        list = new ArrayList();
        list.add("x");
        list.add("y");
        list.add("z");
        
        allValues[1] = list;
    }
Das hier aus:
Code:
printing the DB values...
0: a	x	
1: b	y	
2: c	z	
3: d

Schau' einfach mal rein... Ist sicher noch verbesserungswuerdig... ???:L
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
Thallius MySQL Warum gibt result verschiedene Datumsformate? Datenbankprogrammierung 1
D Datenbank result als Auswahliste im GUI anzeigen lassen Datenbankprogrammierung 0
C Derby/JavaDB result set closed Datenbankprogrammierung 3
D Hibernate CreateQuery ohne Result Datenbankprogrammierung 7
M Logikfrage: Auf zweites Result warten Datenbankprogrammierung 2
M MySQL JDBC Result abfangen Datenbankprogrammierung 7
S executeBatch result immet mit Statement.SUCCESS_NO_INFO Datenbankprogrammierung 4
J illegal operation on empty result set Datenbankprogrammierung 21
H com.mysql.jdbc.NotUpdatable: Result Set not updatable Datenbankprogrammierung 2
S Result Set in Charts ausgeben! Datenbankprogrammierung 7
P Problem mit Result-set Datenbankprogrammierung 13
zilti java.sql.SQLException: Before start of result set Datenbankprogrammierung 2
P Fehler: result-set zeigt auf null, aber warum Datenbankprogrammierung 4
P Operation not allowed after Result Set closed Datenbankprogrammierung 7
megachucky Problem mit: SQL Exception Before start of result set Datenbankprogrammierung 2
G How to put SQL query result into a file Datenbankprogrammierung 3
K java.sql.SQLException: Before start of result set Datenbankprogrammierung 2
S Das printen der Ausgabe des Oracle-SQL-Statements in der Java-Eclipse-Konsole funktioniert nicht Datenbankprogrammierung 6
nikgo Java SQL Ausgabe in Liste o.ä. abspeichern um mit dem Ergbnis "zu arbeiten"? Datenbankprogrammierung 5
Z Ausgabe nur bestimmter Daten Datenbankprogrammierung 6
L MySQL Vergleichen von Array-Inhalt, Ausgabe gleicher Daten Datenbankprogrammierung 3
W MySQL Ausgabe von Datenbank in Java-App Datenbankprogrammierung 6
S Hibernate-Konfiguration : Unverständliche Ausgabe beim Ausführen Datenbankprogrammierung 0
I Fehler bei Ausgabe der Daten aus der DB Datenbankprogrammierung 3
F Komplexer Tabellen-Join und Ausgabe in Excel Datenbankprogrammierung 17
M Ausgabe der Rows mit höchstem Wert X einer Gruppe y,z ? Datenbankprogrammierung 2
C HSQLDB Leerzeichen in Ausgabe Datenbankprogrammierung 4
M Ausgabe in Tabelle der MySQL-Datenbank mit Java Datenbankprogrammierung 4
Z [ORACLE] Ausgabe Tabelle im GUI Datenbankprogrammierung 4
D Keine Ausgabe der Daten Datenbankprogrammierung 3
S problem mit mysql ausgabe. Datenbankprogrammierung 3
S Ausgabe von Tabellendaten auf der heimischen Konsole ;) Datenbankprogrammierung 5
G Aktualisierung Access-DB soll Ausgabe aktualisieren Datenbankprogrammierung 3
P Neo4J Graphen-Datenbank HTML-Dokument importieren Datenbankprogrammierung 0
S Datenbankanbindung + HTML + Applet Datenbankprogrammierung 7

Ähnliche Java Themen

Neue Themen


Oben