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 回答
0

有点晚了。

确认源编号和目标编号是否都映射到您的应用程序域中的相同数量。如果他们不这样做,他们就没有可比性。

如果是这样,那么您需要使用以下规则找到有效的 java 类型:

  1. 如果其中一个是整数数据类型(byte, int, short, int, log, big integer, boolean),另一个是实数数据类型(float / double / big double),那么有效的java sql类型就是整数数据类型。
  2. 如果两者都是整数数据类型,则选择范围更小的那个(例如:short 的范围比 int 更小)。
  3. 如果两者都是真实数据类型,则选择具有较小范围的数据类型。

将两个值都转换为有效的数据类型(实际只需要转换一个)并进行比较。

于 2020-01-29T14:36:04.467 回答