# Tabellenspalte in JTable in der falschen Reihenfolge



## Hunter2598 (23. Apr 2020)

Hallo zusammen,

ich bin gerade dabei eine Datenbanktabell in Java in einem JTable darzustellen.
Folgende Tabelle dient als Datenbankgrunglage:



Mit folgendem Code hole ich mir die Überschriften der Spalten:


```
String columns[] = new String[anzahlSpalten];
        for (int i = 0; i < anzahlSpalten; i++) {
            int k = i;
            k++;
            try {
                columns[i] = rsmd.getColumnName(k);
                
                System.out.println(columns[i]);
            } catch (SQLException e1) {

                e1.printStackTrace();
            }
        }
```

Das Ergebnis sieht wie folgt aus:


Muss die Spalte ,,intNummer" nicht zwischen die ID und den Vornamen?


----------



## Xyz1 (23. Apr 2020)

Hunter2598 hat gesagt.:


> Muss die Spalte ,,intNummer" nicht zwischen die ID und den Vornamen


Nö, wieso?


----------



## Hunter2598 (23. Apr 2020)

Xyz1 hat gesagt.:


> Nö, wieso?


Weil nach meinem Verständnis mit dem Befehl:

 rsmd.getColumnName(2) 

nach der zweiten Spaltenüberschrift der Datenbanktabelle gefragt wird und das meines erachtens nach ,,intNummer" ist.


----------



## Xyz1 (23. Apr 2020)

Aha, und wie kommst du zu der Annahme?


----------



## Hunter2598 (23. Apr 2020)

Ich habe folgendes gelesen:





__





						ResultSetMetaData (Java Platform SE 8 )
					





					docs.oracle.com
				




und daraus die oben geschriebende Logik verstanden.


----------



## fhoffmann (23. Apr 2020)

Hallo,

die Spalten einer Datenbanktabelle haben keine feste Reihenfolge.
Oft werden sie in der Reihenfolge angezeigt, wie sie bei der Erzeugung der Tabelle angelegt wurden - aber das muss nicht so sein.

Gruß
Fritz


----------



## Xyz1 (23. Apr 2020)

Naja, wie kommst Du zu der Annahme, die Reihenfolge sei falsch?


----------



## Hunter2598 (23. Apr 2020)

Weil in der Datenbank der Name der zweiten Spalte "intNummer" lautet?!


----------



## Xyz1 (23. Apr 2020)

Ist das so, hast Du die Tabelle so angelegt?


----------



## fhoffmann (23. Apr 2020)

Wenn du ein `select * from mitarbeiter` machst, ist die Reihenfolge der Spalten im ResultSetMethaData nicht festgelegt.
Nur wenn du im select die einzelnen Spalten angibst (statt des "*"), kannst du dich auf die Spaltenreihenfolge verlassen.


----------



## Xyz1 (24. Apr 2020)

Ok, ich hab's nochmal nachgelesen: https://stackoverflow.com/a/1605167

"There is no SQL command to define the column ordering."

Dh., die column Reihenfolge ist ein Implementierungsdetail, nicht fest definiert und kann aber nicht muss auf der Spalten-Reihenfolge basieren mit der die Tabelle angelegt wurde. (Wie es @fhoffmann bereits richtig geschrieben hatte.)

Was Dein Tool wiedergibt ist völlig belanglos.

Sind damit Deine Fragen beantwortet?


----------

