我有两个数据库 - SRC和TGT有表TAB1。我需要验证两个表中的数据是否相同。该表具有int,varchar,date等类型的数据集。 当我将结果集读入arraylist时,它转换为字符串。因此,我的比较失败是因为SRC和TGT表中的DATE列在转换为字符串时会产生不同的格式。 我的SQL和结果如下:
从TAB1中选择*:
Sl No | Name | DOB | Age | Salary
1 | ABC | 09/02/2000 | 18 | 100.20
2 | XYZ | 02/02/2000 | 18 | 200.40
我们使用下面的java代码:
Statement stmt = databaseDBconn.createStatement();
ResultSet rs = stmt.executeQuery("Select * from TAB1");
ResultSetMetaData rsmd = rs.getMetadata();
int colnum = rsmd.getColumnCount();
String[] str = new string[colnum];
while (rs.next()) {
for (int i=1;i<=colnum;i++) {
str[i-1] = rs.getstring(i);
tablearray.table1.add(str[i-1]);
}
}
我们在SRC和TGT数据库中都使用了相同的上述TAB1代码。 即使两个表中的数据相同,我们也会收到错误消息,因为DATE列值正在转换为字符串。
有没有一种方法可以让DATE保持原样而不将其转换为字符串进行比较?
答案 0 :(得分:0)
我会这样做:
while(rs.next) {
int slNo = rs.getInt("Sl No");
String name = rs.getString("Name");
Date dob = rs.getDate("DOB");
int age = rs.getInt("Age);
BigDecimal salary = new BigDecimal(row.getString("Salary"));
}
这样每个列都以适当的数据类型存储。