package org.teiid.test.h2;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.sql.Connection;
import java.sql.DatabaseMetaData;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import org.h2.tools.RunScript;
import org.h2.tools.Server;
import org.teiid.test.JDBCUtil;
public class H2MetaDataTest {
static Connection conn = null;
static Server h2Server = null;
static void startServer() throws Exception {
h2Server = Server.createTcpServer().start();
conn = JDBCUtil.getDriverConnection("org.h2.Driver", "jdbc:h2:mem://localhost/~/test", "sa", "sa");
}
static void initTestData() throws SQLException, FileNotFoundException {
RunScript.execute(conn, new FileReader("src/file/customer-schema-h2.sql"));
}
static String quoteString;
@SuppressWarnings("unused")
static void testMetaData() throws SQLException {
DatabaseMetaData metadata = conn.getMetaData();
quoteString = metadata.getIdentifierQuoteString();
ResultSet rs = metadata.getTypeInfo();
printColumnNameType(rs);
if (rs != null) {
while (rs.next()) {
String TYPE_NAME = rs.getString(1);
int DATA_TYPE = rs.getInt(2);
int PRECISION = rs.getInt(3);
boolean UNSIGNED_ATTRIBUTE = rs.getBoolean(10);
// System.out.println(TYPE_NAME + ", " + DATA_TYPE + ", " + PRECISION + ", " + UNSIGNED_ATTRIBUTE + "");
}
}
rs = metadata.getTables("TEST", "PUBLIC", null, null);
printColumnNameType(rs);
if (rs != null) {
while(rs.next()) {
String TABLE_CATALOG = rs.getString(1);
String TABLE_SCHEMA = rs.getString(2);
String TABLE_NAME = rs.getString(3);
String TABLE_TYPE = rs.getString(4);
String REMARKS = rs.getString(5);
String TYPE_NAME = rs.getString(6);
String SQL = rs.getString(11);
System.out.println(TABLE_CATALOG + ", " + TABLE_SCHEMA + ", " + TABLE_NAME + ", " + TABLE_TYPE + ", " + REMARKS + ", " + TYPE_NAME + ", " + rs.getString(7) + ", " + rs.getString(8) + ", " + rs.getString(9) + ", " + rs.getString(10));
}
}
}
private static void printColumnNameType(ResultSet rs) throws SQLException {
ResultSetMetaData metadata = rs.getMetaData();
int columns = metadata.getColumnCount();
for(int i = 1 ; i <= columns ; i ++) {
System.out.print(i + ": " + metadata.getColumnName(i) + "/" + metadata.getColumnTypeName(i) + " ");
}
System.out.println();
}
static void stopServer() {
h2Server.stop();
}
public static void main(String[] args) throws Exception {
startServer();
initTestData();
testMetaData();
stopServer();
}
}