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编程实现对这两个结果集进行比较,判断出它们不同?只需要判断出它们是否相同就可以了,谢谢各位大侠能给出指点!!!!
12 个解决方案
#1
直接比较结果集没有特别好的办法,最本的就是将结果集放到List中,然后对两个List进行比较
其实直接对SQL进行控制就OK啦,干嘛非要对结果集进行比较?
其实直接对SQL进行控制就OK啦,干嘛非要对结果集进行比较?
#2
谢谢SUREYOR,能不能具体的给出一段代码,怎么把结果集放在LIST中实现比较是否相同,谢谢了
#3
请各位高手救命啊!!!!!
#4
只要循环你的ResultSet对象,一个一个塞进去不就行了?
什么要这么做呢?从SQL上面的确是可以控制的。
什么要这么做呢?从SQL上面的确是可以控制的。
#5
谢谢楼上的,请问什么是从SQL控制,我是菜鸟,不太清楚。谢谢赐教
#6
大侠救命啊!!!
#7
help!!!!!
#8
你的比较规则是什么:
数据精度?
记录顺序?
数据精度?
记录顺序?
#9
是先看两记录条数是否相等.
若相等,再一条一条比较数据(单个循环就可以了)
若相等,再一条一条比较数据(单个循环就可以了)
#10
谢谢扬扬,我的目的就是当执行不同的SQL查询操作的时候,可能会产生不同的结果集,所以我想比较这些结果集是否相同,比较规则就是看每条相对应的记录是否都完全一样,请问扬扬,能不能给出循环比较的示例代码呢?因为我是初学JAVA,所以不太熟悉,希望您能帮助,谢谢!!!
#11
如果你这两个结果集都没有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;
}
}
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;
}
}
#12
如果关闭了其中一个,在关闭前则要吧他保存到一个数组中,比较时保证同步即可.
#1
直接比较结果集没有特别好的办法,最本的就是将结果集放到List中,然后对两个List进行比较
其实直接对SQL进行控制就OK啦,干嘛非要对结果集进行比较?
其实直接对SQL进行控制就OK啦,干嘛非要对结果集进行比较?
#2
谢谢SUREYOR,能不能具体的给出一段代码,怎么把结果集放在LIST中实现比较是否相同,谢谢了
#3
请各位高手救命啊!!!!!
#4
只要循环你的ResultSet对象,一个一个塞进去不就行了?
什么要这么做呢?从SQL上面的确是可以控制的。
什么要这么做呢?从SQL上面的确是可以控制的。
#5
谢谢楼上的,请问什么是从SQL控制,我是菜鸟,不太清楚。谢谢赐教
#6
大侠救命啊!!!
#7
help!!!!!
#8
你的比较规则是什么:
数据精度?
记录顺序?
数据精度?
记录顺序?
#9
是先看两记录条数是否相等.
若相等,再一条一条比较数据(单个循环就可以了)
若相等,再一条一条比较数据(单个循环就可以了)
#10
谢谢扬扬,我的目的就是当执行不同的SQL查询操作的时候,可能会产生不同的结果集,所以我想比较这些结果集是否相同,比较规则就是看每条相对应的记录是否都完全一样,请问扬扬,能不能给出循环比较的示例代码呢?因为我是初学JAVA,所以不太熟悉,希望您能帮助,谢谢!!!
#11
如果你这两个结果集都没有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;
}
}
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;
}
}
#12
如果关闭了其中一个,在关闭前则要吧他保存到一个数组中,比较时保证同步即可.