有谁能告诉我如何比较两个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
个数据
答案 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
}
或可能
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。