如何在java中获取特定于数据库的数据类型?

时间:2012-03-06 09:06:03

标签: java database ddl

考虑此代码段

Class.forName ("oracle.jdbc.OracleDriver");

          connection = DriverManager.getConnection
             ("jdbc:oracle:thin:@//XXX.XXX.XXX.XXX:1521/xe", "abc", "def");
 DatabaseMetaData metaData=connection.getMetaData();
        ResultSet rsc= metaData.getColumns(null, "MYSCHEMA", "MYTABLE", null);
        while (rsc.next()){

            System.out.println(rsc.getString("COLUMN_NAME").toUpperCase());
            System.out.println(rsc.getString("TYPE_NAME").toUpperCase());
            System.out.println(rsc.getInt("COLUMN_SIZE"));
            System.out.println(rsc.getInt("DECIMAL_DIGITS"));   
            System.out.println(rsc.getString("IS_NULLABLE").toUpperCase()) ;
            System.out.println(rsc.getInt("ORDINAL_POSITION"));
            System.out.println(rsc.getInt("DATA_TYPE"));
            System.out.println("********************************************");
        }

使用这段代码,我可以知道如果假设MYTABLE在Oracle中有一个名为MYBER的MYTABLEID的列,那么我怎样才能知道在Mysql或PostGresql中相应的NUMBER等效数据类型名称是什么?基本上目标是获取特定于数据库的数据类型。与在Oracle中一样,我们有CLOB数据类型,但在postgresql中我们将bytea作为等效数据类型。我想要数据库特定类型,以便我可以创建DDL(创建表语句)来在特定数据库中创建表(从oracle到mysql或postgresql等)。

1 个答案:

答案 0 :(得分:0)

我会创建一个XML文件,其中包含每个数据库和任何特定数据库数据类型(例如CLOB或bytea)的信息,然后我将使用此信息并检索它以用于代码中可能具有的任何特定用途。希望它有所帮助。