簡體   English   中英

如何在java中比較2種不同的數據庫列數據類型

[英]how to compare 2 different database column data type in java

就我而言,我必須比較 2 個不同數據庫的列數據類型。 下面是示例代碼。

ResultSetMetaData metadataSrc = Src_rs.getMetaData(); // here Src_rs is source resultset
ResultSetMetaData metadataTar= Tar_rs.getMetaData();   // here Tar_rs is target resultset
int countSrc = metadataSrc.getColumnCount();
for (int i = 1; i <= countSrc; i++) {
String srcOracleType=metadataSrc.getColumnTypeName(i);
String tarMySqlType = metadataTar.getColumnTypeName(i);
}

在這里我想檢查srcOracleType是否等於tarMySqlType 如果相同我想繼續執行其他需要返回false。

當我嘗試在 MySQL 和 Oracle 中創建一個數據類型為int的表時,此查詢開始。 當我檢索兩個數據庫數據類型時,通過 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 類型:

  1. 如果其中一個是整數數據類型(byte、int、short、int、log、big integer、boolean),另一個是實數數據類型(float / double / big double),那么有效的java sql類型就是整數數據類型。
  2. 如果兩者都是整數數據類型,則選擇范圍較小的一個(例如:short 的范圍比 int 小)。
  3. 如果兩者都是真實數據類型,則選擇范圍較小的一種。

將兩個值都轉換為有效數據類型(實際只需要轉換一個)並進行比較。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM