当前位置:编程学习 > JAVA >>

求大牛解决问题,高分送!!!

 String proposalno=c.getProposalno();
 String sql1="select email from prpcinsured  where proposalno ='"+proposalno+"'";
 logger.debug("根据保单号查询开始!");
 ResultSet rs =db.query(sql1);
 while(rs.next()){
 String email=rs.getString("email");
 if(!"".equals(email)&& email!=null){
   c.setEmailAddress(email);
 }
 }
以上就是我工作中的一段代码,由于SQL语句中的条件proposalno可能会有2个值 ,但根据这2个值查出来的email是同一个的,这样在对象里我就会存有2个同样的email了,我想只存一个,把重复的删掉保留一个,怎么做更改,急求!!! sql --------------------编程问答-------------------- 用Map存起来用email做key 
最后取这个key --------------------编程问答-------------------- 不能用map,能用的话就好解决 了。 --------------------编程问答-------------------- 如果email是一样的,那c.setEmailAddress(email);肯定是一样的,怎么可能有两个值呢 --------------------编程问答-------------------- 这是我没看懂么?根据2个值查出来的数据只有一个值,那么你的存入的对象肯定就只有一个了啊 --------------------编程问答-------------------- 加上distinct关键字
String sql1="select distinct email from prpcinsured  where proposalno ='"+proposalno+"'"; --------------------编程问答--------------------
引用 5 楼 hzw2312 的回复:
加上distinct关键字
String sql1="select distinct email from prpcinsured  where proposalno ='"+proposalno+"'";
+10086 --------------------编程问答--------------------
引用 5 楼 hzw2312 的回复:
加上distinct关键字
String sql1="select distinct email from prpcinsured  where proposalno ='"+proposalno+"'";
同意,请楼主斟酌处理 --------------------编程问答-------------------- 会有两个值?不明白这是为什么,那你怎么知道,你get出来的这个值是不是你想要的呢?好吧,如果你只是想要一个值,只要取到,就是你要的,那简单来说,你不要while(rs.next()),if(rs.next()) 始终只取第一个,其它不变 --------------------编程问答-------------------- 没看明白.
这很难吗?
大不了插入的时候判断一下,如果重复了就不插入就好了. --------------------编程问答-------------------- 你这个 c对象是唯一的。你哪怕查询出来200个。最终的 email 也就是你最后 setEmailAddress的值 怎么可能会有几个。 --------------------编程问答-------------------- 你这样永远只会保存一个值的,根本不会保存两个。
要保险就用5楼的方法:String sql1="select distinct email from prpcinsured  where proposalno ='"+proposalno+"'"; --------------------编程问答--------------------
引用 9 楼 brightyq 的回复:
没看明白.
这很难吗?
大不了插入的时候判断一下,如果重复了就不插入就好了.

+11,源头控制比较好 --------------------编程问答-------------------- 语句加distinct好了,另外,楼主
 if(!"".equals(email)&& email!=null){
    c.setEmailAddress(email);
  }
我觉的这个应该先判断是不是为null再判断是不是.equals(""),要不然可能会空指针异常 --------------------编程问答--------------------
引用 12 楼 vsddvsd 的回复:
引用 9 楼 brightyq 的回复:
没看明白.
这很难吗?
大不了插入的时候判断一下,如果重复了就不插入就好了.
+12,源头控制比较好

首先不否认加上 distinct可以解决掉 出现重复问题!

不管出于什么原因  分析问题应该从源头解决起  String proposalno=c.getProposalno();
既然有2个值,你们不应该只顾解决眼前问题而解决问题,根本问题在于 c.getProposalno()  这个获取的值不唯一  我好奇c 是一个动态对象么?  如果它的值不唯一 能把它作为唯一查询条件? --------------------编程问答-------------------- 看你是什么数据库了,如果是oracle,where条件加上and rownum<2就可以了,再给个建议,楼主的sql语句最好使用预编译,直接拼sql语句不可取(初学者经常这样写) --------------------编程问答-------------------- 这个没太看懂。。 
不过五楼的肯定没错的。。

引用 5 楼 hzw2312 的回复:
加上distinct关键字
String sql1="select distinct email from prpcinsured  where proposalno ='"+proposalno+"'";
--------------------编程问答-------------------- distinct正解,从源头控制输出 --------------------编程问答-------------------- xml中distinct去重是王道阿~~~~ --------------------编程问答--------------------
引用 15 楼 xulong1 的回复:
看你是什么数据库了,如果是oracle,where条件加上and rownum<2就可以了,再给个建议,楼主的sql语句最好使用预编译,直接拼sql语句不可取(初学者经常这样写)


牛B哥,预编译是啥玩意儿? --------------------编程问答--------------------
引用 15 楼 xulong1 的回复:
看你是什么数据库了,如果是oracle,where条件加上and rownum<2就可以了,再给个建议,楼主的sql语句最好使用预编译,直接拼sql语句不可取(初学者经常这样写)

+1 --------------------编程问答--------------------
引用 19 楼 Jucbt 的回复:
引用 15 楼 xulong1 的回复:看你是什么数据库了,如果是oracle,where条件加上and rownum<2就可以了,再给个建议,楼主的sql语句最好使用预编译,直接拼sql语句不可取(初学者经常这样写)

牛B哥,预编译是啥玩意儿?

可以防止SQL注入 --------------------编程问答-------------------- 代码逻辑本身就有问题,
永远只取sql执行结果的最后一条记录。。。。 --------------------编程问答--------------------
引用 5 楼 hzw2312 的回复:
加上distinct关键字
String sql1="select distinct email from prpcinsured  where proposalno ='"+proposalno+"'";

5L说的没错   --------------------编程问答--------------------
引用 5 楼 hzw2312 的回复:
加上distinct关键字
String sql1="select distinct email from prpcinsured  where proposalno ='"+proposalno+"'";


+1 --------------------编程问答-------------------- 除 --------------------编程问答--------------------
引用 24 楼 skyzxl 的回复:
引用 5 楼 hzw2312 的回复:加上distinct关键字
String sql1="select distinct email from prpcinsured  where proposalno ='"+proposalno+"'";

+1

顶 --------------------编程问答--------------------
引用 13 楼 coolboyyzy 的回复:
语句加distinct好了,另外,楼主
 if(!"".equals(email)&& email!=null){     c.setEmailAddress(email);   }我觉的这个应该先判断是不是为null再判断是不是.equals(""),要不然可能会空指针异常


不需要按照你那么写,LZ写的是不会出现空指针的,
因为
"".equals(null) = false
equals 只要求左侧,而允许右侧为null的, 是特意这么设计的
--------------------编程问答--------------------
Quote: 引用 27 楼 baichh20110718 的回复:

引用 13 楼 coolboyyzy 的回复:语句加distinct好了,另外,楼主
 if(!"".equals(email)&amp;&amp; email!=null){     c.setEmailAddress(email);   }我觉的这个应该先判断是不是为null再判断是不是.equals(""),要不然可能会空指针异常

不需要按照……[/quote嗯,确实是这样,null.equals就会报错了,没看清 --------------------编程问答-------------------- 除
补充:Java ,  Web 开发
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,