-2

谁能告诉我如何比较两个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未找到数据

4

5 回答 5

1

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

String col3 = rs1.getString(2);

并在需要时使用col3而不是。rs1.getString(2)

    System.out.println("-------"+ col3);
    if(col3.equals(rs1.getString(2)))
    {
        ...
于 2013-08-24T15:50:13.103 回答
0

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

于 2013-08-24T15:52:39.663 回答
0

你可能做的是

使用 SQL where 子句

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

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

if (colCount > 1)
{
// found
}

对于结果集元数据

或者可能做

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;
}
于 2013-08-24T15:42:21.377 回答
0

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

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

使用此字符串进行比较

str.equals(rs2.getString(2)

谢谢!

于 2013-08-24T15:43:18.213 回答
0

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

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

if (rs.getString(2).equals(val)) {
于 2013-08-24T15:38:17.920 回答