package database;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.List;
public class DumpMetaData {
public DumpMetaData(String connectionUrl) throws SQLException, ClassNotFoundException {
Class.forName("org.apache.derby.jdbc.EmbeddedDriver");
Connection conn = DriverManager.getConnection(connectionUrl);
System.out.println("conn: " + conn);
Statement s = conn.createStatement();
DatabaseMetaData md = conn.getMetaData();
// Discovery all table names in this database:
List<String> tableNames = new ArrayList<String>(5);
ResultSet table_rs = md.getTables(null, null, "%", new String[]{"TABLE"});
while (table_rs.next()) {
System.out.println("Table: " + table_rs.getString(3));
tableNames.add(table_rs.getString(3));
}
// Loop over all tables printing column meta data and the first row:
for (String tableName : tableNames) {
System.out.println("\n\n** Processing table " + tableName + "\n");
String query = "SELECT * from " + tableName;
System.out.println(query);
ResultSet rs = s.executeQuery(query);
ResultSetMetaData table_meta = rs.getMetaData();
int columnCount = table_meta.getColumnCount();
System.out.println("\nColumn meta data for table:");
List<String> columnNames = new ArrayList<String>(10);
columnNames.add("");
for (int col=1; col<=columnCount; col++) {
System.out.println("Column " + col + " name: " + table_meta.getColumnLabel(col));
System.out.println(" column data type: " + table_meta.getColumnTypeName(col));
columnNames.add(table_meta.getColumnLabel(col));
}
System.out.println("\nFirst row in table:");
if (rs.next()) {
for (int col=1; col<=columnCount; col++) {
System.out.println(" " + columnNames.get(col) + ": " + rs.getString(col));
}
}
}
}
/**
* @param args
* @throws ClassNotFoundException
* @throws SQLException
*/
public static void main(String[] args) throws SQLException, ClassNotFoundException {
new DumpMetaData("jdbc:derby:test_database");
}
}