我被指派开发一个小型 Java 应用程序来处理来自 DB2 数据库的一些数据(用于记录业务事务),并且我对数据库的内部设置略知一二。目前,我正在努力找出为什么在我的应用程序上执行的查询(通过 JDBC)给出的结果集与在我的 Quest Central for DB2 客户端上执行的直接查询给出的结果集不同。
String query = "SELECT DISTINCT SYSTEM_NME FROM MISUSER.USAGE_LOGGER";
try {
Connection conn = DB2Connect.getDB2Connection();
Statement stmt = conn.createStatement();
ResultSet rs = stmt.executeQuery(query);
while(rs.next()){
retval.add(rs.getString(this.code.column_name));
}
} catch (SQLException e) {...
上面的代码返回一个包含 7 行的 ResultSet 对象,而在我的 db2 客户端上执行的相同查询返回超过 30 行。如前所述,我使用数据库的经验很少,我需要了解同一个查询如何生成两个不同的结果。
最佳答案
有几个原因。
- 这不是同一个数据库和/或架构。
- 该表具有行级安全性(DB2 具有此功能)并且登录的 JDBC 用户没有足够的权限来访问未返回的表。
- 那些行是在未提交的同一事务中插入和选择的。
关于java - DB2 JDBC : "Same" query gives different results,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4786728/