2011-01-24 33 views
3

我已经被分配去开发一个小的Java应用程序来处理来自DB2数据库的某些数据(用于记录业务事务),并且我知道一些关于数据库。目前,我正在努力研究为什么在我的应用程序上执行的查询(通过JDBC)为我的Quest Central for DB2客户端上执行的直接查询提供了不同的结果集。DB2 JDBC:“Same”查询给出了不同的结果

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行。正如前面提到的,我对数据库的使用经验很少,而且我需要某种想法来说明同一个查询如何产生两个不同的结果。

+2

您可能正在连接到两个不同的数据库,或者可能是不同的角色/模式 – Zeki 2011-01-24 20:25:19

+0

您正在使用什么驱动程序? – 2011-01-24 20:28:09

回答

4

几个原因。

  • 它不是相同的数据库和/或模式。
  • 该表具有行级安全性(DB2具有此功能),并且登录的JDBC用户对没有返回的用户没有足够的权限。
  • 这些很多行都是在未提交的相同事务中插入和选择的。
相关问题