我被分配去开发一个小的Java应用程序来处理来自DB2数据库的某些数据(用于记录业务交易),并且我对datbase的内部设置了解得很清楚.当前,我正在努力找出为什么在我的应用程序上执行的查询(通过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用户对没有返回的权限没有足够的权限.
>在未提交的同一事务中插入并选择了很多行.