如何在Java中比较两个Resultset Columns值?

时间:2013-08-24 15:32:56

标签: java jdbc

有谁能告诉我如何比较两个resultset值?只有在if语句中出错,但其余的都在工作。

Statement s = con.createStatement();
Statement stmnt = con.createStatement();
String query = "select * from tbl_product";
s.execute(query);
ResultSet rs = s.getResultSet();
while(rs.next())
{
    String strOuter=rs.getString(2);
    System.out.println(strOuter);
    String query1 = "select * from PRODUCTS_AJ";
    stmnt.execute(query1);
    ResultSet rs1 = stmnt.getResultSet();
    while(rs1.next())
    {                   
        System.out.println("-------"+rs1.getString(2));
        if(rs.getString(2).equals(rs1.getString(2)))// Getting Error here for this line
        {
            System.out.println("Found");
        }
    }              
}
找不到

java.sql.Exception个数据

5 个答案:

答案 0 :(得分:1)

当您尝试多次读取同一游标的同一列时,会发生此类错误。你遇到的是一个典型的场景。只需暂时存储字符串:

String col3 = rs1.getString(2);

并在需要时使用col3代替rs1.getString(2)

    System.out.println("-------"+ col3);
    if(col3.equals(rs1.getString(2)))
    {
        ...

答案 1 :(得分:0)

您无法再次重新读取列值。因此,将其复制到本地变量中以进行记录。

String val = rs1.getString(2);
System.out.println("-------" + val);

if (rs.getString(2).equals(val)) {

答案 2 :(得分:0)

你可能做的是

使用SQL where子句

String query1 = "select * from PRODUCTS_AJ where fieldNmae = 'something'";

    ResultSetMetaData rsm = rs.getMetaData();
    int colCount = rsm.getColumnCount();

if (colCount > 1)
{
// found
}

ResultSetMetaData

或可能

ResultSet rsOLD = null;
ResultSet rs = s.getResultSet(); 
// rs will be new ResultSet 

while(condition)
{

// check from second row (maintain if case)
.
.
.

// end of loop

      rsOLD = rs;
}

答案 3 :(得分:0)

好的!将JDBC-ODBC桥驱动程序与MS Access一起使用时,这是一个典型错误。我有经验。我用以下方式解决了这个问题。从结果集中多次检索相同的数据 请尝试这样

ResultSet rs = s.getResultSet();
String str=rs.getString(2);

使用此字符串进行比较

str.equals(rs2.getString(2)

谢谢!

答案 4 :(得分:0)

rs.getSting(2)执行rs1的while循环中rs1的行次数。 rs中可能没有那么多行作为rs1。