2013-01-24 33 views
1

在我的情况下,我必须比较2个不同数据库的列数据类型。下面是示例代码。如何在java中比较2个不同的数据库列数据类型

​​

在这里,我要检查srcOracleType是等于tarMySqlType。如果它相同,我想继续执行,否则需要返回false。

此查询开始于我尝试在数据类型为int的MySQL和Oracle中创建表时。通过Java Jdbc代码,当我检索两个数据库数据类型时,对于oracle,它给出NUMBER,对于mysql,它给出LONG。从API

+0

由两个不同的数据库,我的意思是MySql和Oracle在这里。我在ORACLE和MySql中创建了一个数据类型为'INT'的表。 Mysql使用'LONG'作为同一个'INT'的数据类型创建一个表,而Oracle将数据类型设置为'NUMBER'。 –

回答

1

提取物(http://docs.oracle.com/javase/1.4.2/docs/api/java/sql/ResultSetMetaData.html):

getColumnTypeName(int column) 
    Retrieves the designated column's database-specific type name. 

你可以使用:

getColumnClassName(int column) 
     Returns the fully-qualified name of the Java class whose instances are manufactured if the method ResultSet.getObject is called to retrieve a value from the column. 

这将是比较Java中的 “转换”,而不是比较特定的数据库行更容易类型。

+0

我得到Java类的完全限定名,比如'java.math.BigDecimal'用于oracle的'java.lang.Integer'用于mysql。两者是完全不同的,我怎样才能比较这两个。如果两者都是相同的,我必须做一些业务逻辑。 –

+0

你不能直接,你需要一个额外的抽象层次,例如“是数字”。 – ioan