我们可以将SQL结果原样读入变量而不是字符串

时间:2018-02-08 21:42:17

标签: java arrays date arraylist

我有两个数据库 - 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保持原样而不将其转换为字符串进行比较?

1 个答案:

答案 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"));
}

这样每个列都以适当的数据类型存储。