Рассмотрим этот сегмент кодаКак получить конкретные типы данных базы данных в 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 и т. Д.).
Я думаю, вам придется вручную сопоставить эти типы данных в вашем коде – MozenRath
@MozenRath вручную? О Боже. Тогда я даю приглашение на ошибки, которые точно ... :( – Rajesh
Что вы хотите достичь? Почему бы не использовать 'rsc.getObject' и сделать' instanceof' проверки на результирующий объект? – Jonathan