在我的情况下,我必须比较2个不同数据库的列数据类型。下面是示例代码。如何在java中比较2个不同的数据库列数据类型
在这里,我要检查srcOracleType
是等于tarMySqlType
。如果它相同,我想继续执行,否则需要返回false。
此查询开始于我尝试在数据类型为int
的MySQL和Oracle中创建表时。通过Java Jdbc代码,当我检索两个数据库数据类型时,对于oracle,它给出NUMBER
,对于mysql,它给出LONG
。从API
在我的情况下,我必须比较2个不同数据库的列数据类型。下面是示例代码。如何在java中比较2个不同的数据库列数据类型
在这里,我要检查srcOracleType
是等于tarMySqlType
。如果它相同,我想继续执行,否则需要返回false。
此查询开始于我尝试在数据类型为int
的MySQL和Oracle中创建表时。通过Java Jdbc代码,当我检索两个数据库数据类型时,对于oracle,它给出NUMBER
,对于mysql,它给出LONG
。从API
提取物(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中的 “转换”,而不是比较特定的数据库行更容易类型。
我得到Java类的完全限定名,比如'java.math.BigDecimal'用于oracle的'java.lang.Integer'用于mysql。两者是完全不同的,我怎样才能比较这两个。如果两者都是相同的,我必须做一些业务逻辑。 –
你不能直接,你需要一个额外的抽象层次,例如“是数字”。 – ioan
由两个不同的数据库,我的意思是MySql和Oracle在这里。我在ORACLE和MySql中创建了一个数据类型为'INT'的表。 Mysql使用'LONG'作为同一个'INT'的数据类型创建一个表,而Oracle将数据类型设置为'NUMBER'。 –