1

私の場合、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 で datatype を使用してテーブルを作成しようとしたときに始まりますint。Java Jdbc コードを介して、データベースの両方のデータ型を取得すると、oracle のNUMBER場合は 、mysql の場合はLONG.

4

2 に答える 2

1

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 での「変換」を比較する方が簡単です。

于 2013-01-24T12:49:24.800 に答える