# Tabellen auslesen in einer DB



## slady (26. Jul 2005)

Hallo nochmals,

jetzt such eich schon seit längerem wie man Tabellennamen einer DB auslesen kann.

Leider nichts gefunden. Hat da einer eventuell Tips für?

Vielen Dank   :bahnhof:


----------



## DP (26. Jul 2005)

metadata?


----------



## slady (26. Jul 2005)

ja, du meinst ResultSetMetaData, oder?
Da gibt es keine Methode die getTableNames oder so ähnlich heisst.

spalten kann man auslesen, tabels leider nicht, meinen Kenntnissen nach.  :bahnhof:


----------



## DP (26. Jul 2005)

sorry, falsche baustelle.

unter mysql:

rs = stmt.execute("show tables");

je nach dem werden die tabellen der jeweiligen db ausgegeben...


----------



## slady (26. Jul 2005)

hhhhmm, ich meinte in java. Wo sind die klammern vor und nach "show tables"?

Danke, ich vermute der Rest ist SQL was in den Anführungsstrichen steht, oder?


----------



## DP (26. Jul 2005)

?!


----------



## DP (26. Jul 2005)

try{
statement stmt = con......;
strign sql = "show tables";
resultset rs = stmt.executequery(sql);
while(rs.next()){
System.out.println(rs.get(1));
}
rs.close();
stmt.close();
con.close();
}
catch(Exception e){
e.printstacktrace()
rs=null;
stmt=null;
con=null;
}


----------



## abollm (26. Jul 2005)

slady hat gesagt.:
			
		

> [..]
> jetzt such eich schon seit längerem wie man Tabellennamen einer DB auslesen kann.
> Leider nichts gefunden. Hat da einer eventuell Tips für?



Das hängt i.d.R. vom eingesetzten RDBMS ab.

Den Befehl "show tables" kannst du z.B. nicht in einem Oracle-RDBMS verwenden.


----------



## DP (26. Jul 2005)

ne, oracle imho 

select distinct table_name from all_tables


----------



## abollm (26. Jul 2005)

DP hat gesagt.:
			
		

> ne, oracle imho
> 
> select distinct table_name from all_tables



Warum so? Es geht auch mit der System-View USER_TABLES:

```
select table_name from user_tables
```

In deinem Fall würde er u.U. nicht benötigte Tabellen anderer Nutzer erhalten.


----------



## Bleiglanz (27. Jul 2005)

es gibt auch DatabaseMetaData

da steckt alles drin


----------



## slady (27. Jul 2005)

Danke postingcounter++,
nur die methode get() gibt's nicht im Objekt ResultSet:
System.out.println(rs.get(1)); ??

Verstehe ich vielleicht was falsch?


----------



## slady (27. Jul 2005)

Ich bedanke mich natürlich an alle die hier was geschrieben haben, sorry 

Meine Frage bleibt trotzdem akut :-(


----------



## DP (29. Jul 2005)

sorry. von der firma aus kann ich nicht posten weil stevg hier scheisse mit den cookies gebaut hat 

also:


System.out.println(rs.getString(1));


----------



## Grizzly (4. Aug 2005)

Ich empfehle auch die Methode von Bleiglanz: Einfach _*getMetaData*()_ auf das connection-Objekt ausführen. Dort kann man sich dann mit _*getTables*(String catalog, String schemaPattern, String tableNamePattern, String[] types)_ ein ResultSet geben lassen, in dem die Tabellen drin stehen.

_EDIT:_
Du kannst sogar über _DatabaseMetaData_ feststellen, welche Spalten PrimarKey, ForeignKey, Unique und Not Null sind (hab' das gerade ausprobiert - und es funktioniert wirklich  ).


----------

