当我从Java应用程序中使用PreparedStatement.executeQuery()
执行查询时,我得到了其中一个字段的值错误的resultSet对象。当我使用在SQL Developer中运行相同的查询时,我会正确看到这些值。
例如在我的查询输出中,我可以看到以下值:
ID_TABLE VALUE_ID
-------------------------
1234 111111
1234 222222
5678 333333
5678 444444
但是,在Java中,当我在while循环中迭代结果集时,我在一行上分别用rs.getString("ID_TABLE")
和rs.getString("VALUE_ID")
打印了日志,
System.out.println(" Table Id= "+rs.getString("ID_TABLE")+" -Value Id= "+rs.getString("VALUE_ID"));
在这里,我输入的日志为表ID = 5678-值ID = 222222,这是不正确的。我总是在sql developer中获得相同的输出,并且它仅在单个线程中运行。没有并行运行。
我正在使用Oracle 12c(-12.1版)和jdk 1.7.0_45。
您认为这是Java方面的问题还是Oracle方面的数据获取问题?
如果您需要其他详细信息,请告诉我。
请在下面找到我的方法代码段:
Connection conn = null;
ResultSet res = null;
String strQuery = "SELECT ID_TABLE,VALUE_ID FROM AppTableDetails";
PreparedStatement pStmt = null;
conn = getConnection();
pStmt = conn.prepareStatement(strQuery);
res = pStmt.executeQuery();
while (res.next())
{
System.out.println("Table Id= "+res.getString("ID_TABLE")+" -Value Id= "+res.getString("VALUE_ID"));
}
还有一件事,这个错误是随机发生的,而不是我每次运行该过程时都会发生。