Java中两个ResultSet的比较

时间:2011-10-19 02:12:47

标签: java database oracle hibernate jdbc

处理Java ResultSet的最佳方法是什么?我正在创建一个桌面应用程序,它将使用JDBC连接到oracle数据库。

但是,我遇到处理ResultSet的问题,因为我无法使用for循环进行比较。

// create a database connection object
DB db = new DB();

// get rows of my first table and second table
ResultSet firstRS = db.getMyFirstTable();
ResultSet seconRS = db.getSecondTable();

// compare the two tables
while(firstRS.next()) 
{
    // get the row of my first table
    String firstRSRow = firstRS.getString("col1");

    while(secondRS.next()) 
    {
        // get the row of my second table
        String secondRSRow = seconRS.getString("col1");

        // compare row from first table to the row in second table
        if(firstRSRow.startsWith(secondRSRow))
        {
            // do some processing here....
        } // end if
    } // end while
} // end while

我知道这可以通过Hibernate用几行代码完成,但我没有时间研究它。

我还从apache中找到了公共DbUtils,但对于我来说,作为新手程序员似乎很复杂。

是否有其他方式/工具/库/框架足够简单,可以从数据库中获取ResultSet并以简单直接的方式对其进行操作?

如果您可以将我引导至包含有关Java数据库连接的示例代码的网站,我将不胜感激。

非常感谢您的支持。

4 个答案:

答案 0 :(得分:0)

为什么ResultSet?您可以轻松地将值与SELECT语句进行比较。如果您仍想使用ResultSet,请考虑CachedRowSet

答案 1 :(得分:0)

DB db = new DB();

 // get rows of my first table and second table
ResultSet firstRS = db.getMyFirstTable();
ResultSet seconRS = db.getSecondTable();

// compare the two tables
while(firstRS.next() || secondRS.next()) 
{
// get the row of my first table
String firstRSRow = firstRS.getString("col1");
String secondRSRow = seconRS.getString("col1")

    // compare row from first table to the row in second table
    if(firstRSRow.startsWith(secondRSRow))
    {
        // do some processing here....
    } // end if
} // end while

答案 2 :(得分:0)

public static boolean resultset(String SQL1, String SQL2){
    public boolean status=false;
    ResultSet ViewResultset = st.executeQuery(SQL1);
      ResultSet QueryResultset = st.executeQuery(SQL2);

      while (QueryResultset.next() | ViewResultset.next())
      if (ViewResultset.getRow() == 0   | QueryResultset.getRow() == 0) {
      break;
      } else {
         for (int i = 1; i < ViewResultset.getMetaData().getColumnCount() + 1; i++) {
            System.out.println("OOO"+ QueryResultset.getMetaData().getColumnCount());
            String columnName = ViewResultset.getMetaData().getColumnName(i);
      System.out.println("ColumnName :" + columnName);
    for (int j = 1; j < QueryResultset.getMetaData().getColumnCount() + 1; j++)
    if (ViewResultset.getMetaData().getColumnName(i).equals(QueryResultset.getMetaData().getColumnName(j))&& !(QueryResultset.getString(columnName) == null || ViewResultset.getString(columnName) == null))
    if (ViewResultset.getString(columnName).toUpperCase().contains(QueryResultset.getString(columnName).toUpperCase())) {
        System.out.println(" Actual "+ ViewResultset.getMetaData().getColumnName(i)     + " Expected: "+ ViewResultset.getString(columnName));
        status=true;

    }      
    else {System.out.println(" Actual "+ ViewResultset.getMetaData().getColumnName(i)     + " Expected: "+ ViewResultset.getString(columnName));
    }
    }
    }
    return status;
    } 
}

答案 3 :(得分:-1)

ResultSet最终是Object的子类,我们可以直接比较两个或多个对象。您的问题有点具体:

 ResultSet rs=st.executeQuery(sql1);
 ResultSet rs1=st.executeQuery(sql2);

其中sql1和sql2是2个语句

 while(rs.next() && rs1.next()){
     int a=rs.next();
     int b=rs1.next();
     if(a==b){
          System.out.println("Compairing two ResultSets");
     }
 }