2013-01-24 73 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