Tabellen in Datenbank zählen

jannaef

Mitglied
Hallo

Ich habe ein Problem, ich möchte die Tabellen in einer Datenbank zählen.
Habe es schon mit der Klasse "DatabaseMetaData" und mit dem SQL Befehl "Show tables" versucht, klappte aber irgendwie nicht.

Kann mir jemand ein Tipp geben
 
Und wenn du mit "SHOW TABLES" die Datenbank abfrägst und dann dein ResultSet durchgehst?
Java:
ResultSet objReSet = deinStatement.executeQuery("SHOW TABLES;");
int iCounter = 0; //Anzal der Tabellen
while(objReSet.next()){
  iCounter++;
}
Das schonmal versucht?
 
Zuletzt bearbeitet:
Und wenn du mit "SHOW TABLES" die Datenbank abfrägst und dann dein ResultSet durchgehst?

java Code:
ResultSet objReSet = deinStatement.executeQuery("SHOW TABLES");int iCounter = 0; //Anzal der Tabellenwhile(objReSet.next()){ iCounter++;}Das schonmal versucht?

Danke für deine Antwort

Ja so etwas habe ich auch schon versucht und dabei bekomme ich folgende Fehlermeldung:

com.ibm.db2.jcc.b.SqlException: executeQuery method cannot be used for update.
 
Klappt bei mir wunderbar. Hast du vorher auch eine Datenbank ausgewählt?
Poste doch mal den Code und die Komplette Fehlermeldung.
 
Verbindung zur DB klappt

Java:
try {
	Class.forName("com.ibm.db2.jcc.DB2Driver");
	//SW80-N10.eng.zkb.ch
	conn = DriverManager.getConnection("jdbc:db2:" +
					"//dtaa.eng.zkb.ch:446/D2TA", user, passw);
	} catch (ClassNotFoundException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
}

Hier meine Methode

Java:
public int countTables(){
	Statement statement = null;
	ResultSet objReSet;
	int iCounter = 0; //Anzal der Tabellen
	try {	
statement = conn.createStatement();
			objReSet = statement.executeQuery("SHOW TABLES");
			while(objReSet.next()){
				iCounter++;
	}
	} catch (SQLException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
	return iCounter;
}

Fehlermeldung:
Code:
com.ibm.db2.jcc.b.SqlException: executeQuery method cannot be used for update.

	at com.ibm.db2.jcc.b.zc.a(zc.java:2387)
	at com.ibm.db2.jcc.b.zc.a(zc.java:1684)
	at com.ibm.db2.jcc.b.zc.a(zc.java:497)
	at com.ibm.db2.jcc.b.zc.executeQuery(zc.java:481)
	at aufgaben.Aufgaben.countTables(Aufgaben.java:59)
	at aufgaben.Aufgaben.main(Aufgaben.java:75)
 
Ich sehe nirgendwo, dass du eine Datenbank ausgewählt hast.

Java:
public int countTables(){
  Statement statement = null;
  ResultSet objReSet;
  int iCounter = 0; //Anzal der Tabellen
  try {	
    statement = conn.createStatement();

    //Das hier fehlt warscheinlich
    statement.executeQuery("USE " + nameDeinerDatenbank + ";");

    objReSet = statement.executeQuery("SHOW TABLES;");
	
    while(objReSet.next()){
	iCounter++;
    }
  } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
  }
  return(iCounter);
}
 
Zuletzt bearbeitet:
Die Datenbank heiß D2TA und befindet sich in der Connection URL.

http://www.mydatabasesupport.com/for...or-update.html

Unter DB2 gehts wohl so:
http://www.tutorials.de/forum/1366570-post8.html

Also dass heiss das "SHOW TABLES" kein gültiges SQL statement ist und ich das nicht verwenden darf.

Aber wie soll ich dann vorgehen

Der zweite link bringt mich nicht wirklich weiter, ich weiss schon wie man eine tabelle auswählt und so.

Ich will einfacht wissen wieviele tabellen in meiner Datenbank drin sind.
 
Zurück