求大牛解决问题,高分送!!!
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+"'"; --------------------编程问答-------------------- +10086 --------------------编程问答-------------------- 同意,请楼主斟酌处理 --------------------编程问答-------------------- 会有两个值?不明白这是为什么,那你怎么知道,你get出来的这个值是不是你想要的呢?好吧,如果你只是想要一个值,只要取到,就是你要的,那简单来说,你不要while(rs.next()),if(rs.next()) 始终只取第一个,其它不变 --------------------编程问答-------------------- 没看明白.
这很难吗?
大不了插入的时候判断一下,如果重复了就不插入就好了. --------------------编程问答-------------------- 你这个 c对象是唯一的。你哪怕查询出来200个。最终的 email 也就是你最后 setEmailAddress的值 怎么可能会有几个。 --------------------编程问答-------------------- 你这样永远只会保存一个值的,根本不会保存两个。
要保险就用5楼的方法:String sql1="select distinct email from prpcinsured where proposalno ='"+proposalno+"'"; --------------------编程问答--------------------
+11,源头控制比较好 --------------------编程问答-------------------- 语句加distinct好了,另外,楼主
if(!"".equals(email)&& email!=null){我觉的这个应该先判断是不是为null再判断是不是.equals(""),要不然可能会空指针异常 --------------------编程问答--------------------
c.setEmailAddress(email);
}
首先不否认加上 distinct可以解决掉 出现重复问题!
不管出于什么原因 分析问题应该从源头解决起 String proposalno=c.getProposalno();
既然有2个值,你们不应该只顾解决眼前问题而解决问题,根本问题在于 c.getProposalno() 这个获取的值不唯一 我好奇c 是一个动态对象么? 如果它的值不唯一 能把它作为唯一查询条件? --------------------编程问答-------------------- 看你是什么数据库了,如果是oracle,where条件加上and rownum<2就可以了,再给个建议,楼主的sql语句最好使用预编译,直接拼sql语句不可取(初学者经常这样写) --------------------编程问答-------------------- 这个没太看懂。。
不过五楼的肯定没错的。。
--------------------编程问答-------------------- distinct正解,从源头控制输出 --------------------编程问答-------------------- xml中distinct去重是王道阿~~~~ --------------------编程问答--------------------
牛B哥,预编译是啥玩意儿? --------------------编程问答--------------------
+1 --------------------编程问答--------------------
可以防止SQL注入 --------------------编程问答-------------------- 代码逻辑本身就有问题,
永远只取sql执行结果的最后一条记录。。。。 --------------------编程问答--------------------
5L说的没错 --------------------编程问答--------------------
+1 --------------------编程问答-------------------- 除 --------------------编程问答--------------------
顶 --------------------编程问答--------------------
不需要按照你那么写,LZ写的是不会出现空指针的,
因为
"".equals(null) = false--------------------编程问答--------------------
equals 只要求左侧,而允许右侧为null的, 是特意这么设计的