Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java中比较两个Resultset列的值?_Java_Jdbc - Fatal编程技术网

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

如何在Java中比较两个Resultset列的值?,java,jdbc,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 str

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

无法再次读取列值。因此,将其复制到局部变量中以进行日志记录

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

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

你能做的就是

使用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;
}

好的!这是在MS Access中使用JDBC-ODBC网桥驱动程序时出现的典型错误。我经历过。我用下面的方法解决了它。从结果集中多次检索相同的数据。
请像这样试试

ResultSet rs = s.getResultSet();
String str=rs.getString(2);
使用此字符串进行比较

str.equals(rs2.getString(2)

谢谢

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

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

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

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

并且异常的完整堆栈跟踪是?顺便说一句,为什么不使用1个查询为您进行比较?@Sazzadurahaman“不同的连接/语句”:这将大大增加开销!