读书人

怎么比较两个SQL查询语句产生的结果集

发布时间: 2012-02-10 21:27:41 作者: rapoo

如何比较两个SQL查询语句产生的结果集是否相同???
我用JDBC连接了MYSQL数据库,对一个表(表的名字叫Coffees)进行的查询操作,我的代码如下:
public class Coffees {

/** Creates a new instance of Coffees */
public Coffees() {
}

/**
* @param args the command line arguments
*/
public static void main(String[] args) {
Connection con; Statement sql; ResultSet rs;
try { Class.forName( "com.mysql.jdbc.Driver ");
}
catch(ClassNotFoundException e)
{System.out.println( " "+e + " TEST ");}

try{ con = DriverManager.getConnection( "jdbc:mysql://localhost:3306/COFFEES ", "root ", "nbuser ");
sql = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
rs = sql.executeQuery( "SELECT COF_NAME, PRICE FROM COFFEES ");
while(rs.next())
{
String name = rs.getString( "COF_NAME ");
Double price = rs.getDouble( "PRICE ");
System.out.println(name + " " + price);

}

con.close();
}
catch (SQLException sqlexception){


System.out.println( "Exception " + sqlexception);
}
}
}

我用executeQuery( "SELECT COF_NAME, PRICE FROM COFFEES ")查询了一次该表,得到的结果集是:
Colombian 7.99
Colombian_Decaf 8.99
Espresso 9.99
French_Roast 8.99
French_Roast_Decaf 9.99

我如果再次查询一次该表,executeQuery( "SELECT COF_NAME , ABS(PRICE) AS PRICE FROM COFFEES "),得到的结果集是:
Colombian 7.9899997711182
Colombian_Decaf 8.9899997711182
Espresso 9.9899997711182
French_Roast 8.9899997711182
French_Roast_Decaf 9.9899997711182

我的问题是:
如何用JAVA编程实现对这两个结果集进行比较,判断出它们不同?只需要判断出它们是否相同就可以了,谢谢各位大侠能给出指点!!!!




[解决办法]
如果你这两个结果集都没有close,可以这样:

rs.last();
rs2.last();
if (rs.getRow() != rs2.getRow()) {
//记录数不等,即结果不等
}
rs.first();
rs2.first();
while (rs.next() && rs2.next()) {
if (Math.abs(rs.getFloat(2) - rs2.getFloat(2)) > 0.00000001) {
//记录值不等
break;
}
}

读书人网 >J2SE开发

热点推荐