
在JAVA中对数据库操作很老练的高手速度来!
我现在用两个SQL语句得到两个结果集!要嵌套循环遍历每个数据,有相同的才输出,但是每次得到的结果都只有一个数据是相同的,但是明明是两个相同的数据.还想了解下rs.next...
我现在用两个SQL语句得到两个结果集!要嵌套循环遍历每个数据,有相同的才输出,但是每次得到的结果都只有一个数据是相同的,但是明明是两个相同的数据.还想了解下rs.next()的用法的限制?有点郁闷,开始写了循环体本以为解决问题.但是交给客户测试后,又出现问题,每次只有显示一个出来!
大家去我百度的空间看代码吧!说不好了!http://hi.baidu.com/soldierbandit 展开
大家去我百度的空间看代码吧!说不好了!http://hi.baidu.com/soldierbandit 展开
6个回答
展开全部
建议你先把两个结果集保存到某一种集合中,Hash表或List或vector随便什么。
之后比较两个集合中的数据。
给你写个List的
List list_1 = (List)RSList1【第一个RS集合】
List list_2 = (List)RSList2【第二个RS集合】
for(int i=0;i<list_1.size();i++){
for(int j=0;j<list_2.size();j++){
if(list_1.get(i).equals(list_2.get(j))){
System.out.pirntln("相等的值:"+list_1.get(i));
}
}
}
一旦你的数据太多这样的效率还是不高,呵呵。
你可以把每个list.get出来的值先赋值给一个String类型的变量 之后用这两个String变量做比较。结果一样。
上面是手写的,如果有问题 你稍微改一改。
之后比较两个集合中的数据。
给你写个List的
List list_1 = (List)RSList1【第一个RS集合】
List list_2 = (List)RSList2【第二个RS集合】
for(int i=0;i<list_1.size();i++){
for(int j=0;j<list_2.size();j++){
if(list_1.get(i).equals(list_2.get(j))){
System.out.pirntln("相等的值:"+list_1.get(i));
}
}
}
一旦你的数据太多这样的效率还是不高,呵呵。
你可以把每个list.get出来的值先赋值给一个String类型的变量 之后用这两个String变量做比较。结果一样。
上面是手写的,如果有问题 你稍微改一改。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼主发表的不清楚,造成其他回答人的误解,看了你写的,也很无奈吧!至少我是这样认为的.你写成得到Resolced后就break应该OK.如果不break的话,你就会发现会覆盖掉你的值.是不是?呵呵就你那样做吧!虽然流氓了点,不过仔细想想还是不错的想法,本来想到你可以把三句写成两句,但是一想还是不行,因为你在后面又是先执行查出条件的那句,rs.next()又是往下执行的语句,不可能停留的.所以你那样写没有什么问题,虽然执行效率低了那么一点点,但是实现为主嘛!
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
/*对应的字段相同,a对象的stuts属性设置resoled.
假设这个比较的字段为name
*/
boolean hasSame = false;//一个标志,代表是否有相同的
while(rs1.next()&&rs2.next()){
String name1 = rs1.getString("name");
String name2 = rs2.getString("name");
if(name1.equals(name2)){
hasSame = true;
a.setStuts("resoled");//使用a对象的setter方法赋值
}
}
/*
如果没有相同的,针对rs1结果集中的一个字段判断,再将a 对象的stuts属性设置为open或cloes.然后将A对象存到arraylist中.
假设这个判断的字段为flag
*/
if(!hasSame){
ArrayList at = new ArrayList();
while(){
if(//条件1){
a.setStuts("open");
}
if(//条件1){2
a.setStuts("cloes");
}
at.add(a);
}
}
假设这个比较的字段为name
*/
boolean hasSame = false;//一个标志,代表是否有相同的
while(rs1.next()&&rs2.next()){
String name1 = rs1.getString("name");
String name2 = rs2.getString("name");
if(name1.equals(name2)){
hasSame = true;
a.setStuts("resoled");//使用a对象的setter方法赋值
}
}
/*
如果没有相同的,针对rs1结果集中的一个字段判断,再将a 对象的stuts属性设置为open或cloes.然后将A对象存到arraylist中.
假设这个判断的字段为flag
*/
if(!hasSame){
ArrayList at = new ArrayList();
while(){
if(//条件1){
a.setStuts("open");
}
if(//条件1){2
a.setStuts("cloes");
}
at.add(a);
}
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
在JAVA中对数据库操作很老练的高手速度来!
整的跟谁都欠你似的!!!!
楼主得从跟上解决问题,你说有2个结果集,相同的才输出。
这个问题可以通过sql语句的关联查询等方法解决,必须返回一个结果集,你现在的做法是复杂而没有意义的。
如果不会,可以把具体的表名,要求等贴出来!
回答者: laogao3232 - 举人 五级 5-8 17:09
这个就哦了
整的跟谁都欠你似的!!!!
楼主得从跟上解决问题,你说有2个结果集,相同的才输出。
这个问题可以通过sql语句的关联查询等方法解决,必须返回一个结果集,你现在的做法是复杂而没有意义的。
如果不会,可以把具体的表名,要求等贴出来!
回答者: laogao3232 - 举人 五级 5-8 17:09
这个就哦了
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
楼主得从跟上解决问题,你说有2个结果集,相同的才输出。
这个问题可以通过sql语句的关联查询等方法解决,必须返回一个结果集,你现在的做法是复杂而没有意义的。
如果不会,可以把具体的表名,要求等贴出来!
这个问题可以通过sql语句的关联查询等方法解决,必须返回一个结果集,你现在的做法是复杂而没有意义的。
如果不会,可以把具体的表名,要求等贴出来!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询