HLSQLDB & getTables

fastfiler

Mitglied
hi,

ich habe eine kleine anwendung die auf hlsqldb basiert. ich möchte eine methome schreiben, die abprüft ob die tabellen die für die anwendung notwendig sind bereits erzeugt sind. hab unteres gefunden. leider erhalten ich nur "null" werte und nicht die tabellennamen. hat jemand schon mal ähnliches benötigt? falls ja wäre ich für einen tip dankbar.

Code:
String[] aTyps = new String[]{"TABLE"};
DatabaseMetaData lv_metadata = con.getMetaData();
ResultSet lv_table_set = lv_metadata.getTables(null, null, "%", aType );

while(lv_table_set.netx()){
 System.out.println(lv_table_set.getString(1));
}
 
Hallo!


Über DatabaseMetaData erhälst du Zugriff auf den Datenbank-Katalog was wiederum auch nur Tabellen sind.
Die Katalog-Tabelle in der die enthaltenen Datenbankobjekte aufgelistet sind hat diesen Aufbau:
Code:
  TABLE_CAT TABLE_SCHEM TABLE_NAME TABLE_TYPE REMARKS TYPE_CAT TYPE_SCHEM TYPE_NAME SELF_REFERENCING_COL_NAME REF_GENERATION HSQLDB_TYPE READ_ONLY
Du musst nun eben auch die entsprechende Spalte ausgeben ;-)

Schau mal hier:
Code:
 /**
  * 
  */
 package de.tutorials;
 
 import java.sql.Connection;
 import java.sql.DatabaseMetaData;
 import java.sql.DriverManager;
 import java.sql.ResultSet;
 
 /**
  * @author Tom
  * 
  */
 public class HSQLDBExample {
 
 	/**
 	 * @param args
 	 */
 	public static void main(String[] args) throws Exception {
 
 		Class.forName("org.hsqldb.jdbcDriver");
 
 		Connection connection = DriverManager.getConnection(
 				"jdbc:hsqldb:hsql://localhost/xdb", "sa", "");
 
 		DatabaseMetaData databaseMetaData = connection.getMetaData();
 		ResultSet resultSet = databaseMetaData.getTables(null, null, "%",
 				new String[]{"TABLE"});
 
 		while (resultSet.next()) {
 			System.out.println(resultSet.getString("TABLE_NAME"));
 		}
 		resultSet.close();
 
 		connection.close();
 	}
 }

Gruss Tom
 
Zurück