jc_bm表的格式:
部门 编号 大部门(dbm)
FAN  151   制造
HP   111   制造
ISO  311   品证
...  我需要做一个下拉框,框中取(dbm)中不重复的所有值,用了distinct可仍然取出了所有的值(就是重复的也显示出来了),如下代码:ke = new Combo(comp,SWT.READ_ONLY);
addCombo(ke,"dbm","jc_bm");private void addCombo(Combo combo, String l, String b) {
ResultSet rs = null;
String sql = "select distinct " + l + " from " + b;
rs = db.executeQuery(sql);

try {
while (rs.next()){
combo.add(rs.getString(l));
System.out.println(rs.getString(l));
}

rs.close();
} catch (Exception e) {
e.printStackTrace();
}
}请问为什么会出现这样的情况呢.有什么好的解决办法?

解决方案 »

  1.   

    可不可以说的明白一些?如何改sql?
      

  2.   

    我在sql数据库里单独使用 select distinct dbm from jc_bm 结果能实现只显示不重复的数据。为什么放到java代码中就会显示所有结果呢?
    如果是sql查询语句错误,请教应该使用什么样的sql语句?
      

  3.   

    好像是
    凡是sql语句 全用“”包括起来(除了+号)!
    String sql = "select distinct " + "dmb" + " from " + "jc_bm";
    我没试,你自己试一下吧!!
    不对,不要笑话啊!!
    我是一个菜鸟!!!
      

  4.   

    这个。。我已经+起来了啊。
    addCombo(ke,"dbm","jc_bm");
    String sql = "select distinct " + l + " from " + b;
    l = "dbm"    b="jc_bm"
      

  5.   

    单独使用那sql语句的确是去掉重复数据了。
    关键就是
    combo.add(rs.getString(l));
    System.out.println(rs.getString(l));
    我将这段读的结果直接显示来看,所有重复不重复的就都出来了。
    所以才觉得奇怪。不知道怎么搞了
      

  6.   

    关注...
    执行sql后的结果应该就是过滤掉重复数据了的...
    那么rs里面就不会存放重复的数据
    头大
    关注两天了...
      

  7.   

    自己搞好了。
    还是把那sql语句修改了下
    String sql = "select distinct " + l + " from " + b;
    变成
    String sql = "select distinct " + l + " from " + b + " group by " + l;
    总算搞出来了。不过这条语句会不会有啥后遗症啊(说实话,虽然这样改了看起来没问题了,可为什么没问题,为什么前面那句就不能实现,我还真是不知道。)
      

  8.   

    String sql = "select distinct " + l + " from " + b;
    String sql = "select distinct " + l + " from " + b + " group by " + l;
    已经去掉了重复数据了 那这两条句子查询结果应该没有区别的吧
      

  9.   

    结果没区别原理不一样,DISTINCT是从SELECT 语句的结果中除去重复的行,而在GROUP BY查询语句中只会汇总出列的不同值,与聚合函数的返回值.