2012-03-06 4 views
0

Рассмотрим этот сегмент кодаКак получить конкретные типы данных базы данных в java?

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 имеет столбец, имя которого MYTABLEID типа NUMBER в Oracle, то как я могу узнать, что будет соответствующее имя типа данных NUMBER эквивалент в Mysql или PostGresql? Основная цель - получить тип данных, специфичный для базы данных. Как и в Oracle, у нас есть тип данных CLOB, но в postgresql у нас есть bytea как эквивалентный тип данных. Мне нужен конкретный тип базы данных, чтобы я мог создать DDL (Create table statement) для создания таблицы в конкретной базе данных (от oracle до mysql или postgresql и т. Д.).

+0

Я думаю, вам придется вручную сопоставить эти типы данных в вашем коде – MozenRath

+0

@MozenRath вручную? О Боже. Тогда я даю приглашение на ошибки, которые точно ... :( – Rajesh

+1

Что вы хотите достичь? Почему бы не использовать 'rsc.getObject' и сделать' instanceof' проверки на результирующий объект? – Jonathan

ответ

0

Я бы создал XML-файл с информацией о каждой базе данных и конкретном типе данных базы данных (например, CLOB или bytea), затем я бы использовал эту информацию и извлек ее для любого конкретного использования, которое может иметься в вашем коде. Надеюсь, поможет.

+0

Если кто-то может поделиться правильной информацией о сопоставлении, тогда это было бы действительно полезно для всех трех оракулов, mysql, postgresql – Rajesh

+0

он доступен только в Интернете, его необходимо скомпилировать - http://www.postgresql.org/docs/8.4/static/datatype.html, http://ss64.com/ora/syntax-datatypes. HTML – aretai

Смежные вопросы