我想用list2来匹配code中的三四位,用list3来匹配code中的四五位,然后将匹配出来的放入新的list中去。最主要的就是两边一定要匹配,因为我要将他们放入下拉框一一对应,哪位大侠能帮帮我啊。

解决方案 »

  1.   

    List plist1 = new ArrayList(); //用来存放市的code
    List plist2 = new ArrayList(); //用来存放县的code 
    String p1 = list1.toString(); //省
    String p2 = list2.toString(); //市
    String p3 = list3.toString(); //县
    try
    {
    Conn con = new Conn();
    String sql = "select * from GAB_UINT_DICT_DATA where uint_name like '"+p1+"%'";
    ResultSet rs = con.getRs(sql);
    while(rs.next())
    {
             String ucode = rs.getString(2);
    String uname = rs.getString(3);
    for(int i=0;i<list2.size();i++)
    {
             String s1 = list2.get(i).toString();
    if(uname.indexOf(s1)!=-1)
    {
    String subucode = ucode.substring(2,4);
    plist1.add(subucode); }
    }
    for(int j=0;j<list3.size();j++)
    {
    String s2 = list3.get(j).toString();
    if(uname.indexOf(s2)!=-1)
    {
    String subucode = ucode.substring(4,6);
    plist2.add(subucode); }
             }
    }
    con.close();
    }
    这是我的代码
      

  2.   

    有那么麻烦吗?写sql不就出来了
      

  3.   

    我要匹配啊,select里的option的value对应code,select里的option的text对应name,现在我做好了text的,value的 还没有解决。谁能教教小第啊!!!
      

  4.   

    我是通过省查找市和县的,现在市县已经找到,就差对应的code加到option的value里了。谁能帮帮忙啊?如果是没看懂我说的意思的话,可以告诉我一声,我会说详细一些的。谢谢了。
      

  5.   

    老实说,没有看懂要作什么
    是不是三个下拉框分别是省、市、县,对应的编码分别是aa、bb、cc,三级联动下拉框?
    我不知道你的数据库是怎么做的,
    我通常用数据字典,把省级列位aa0000,市级列为aabb00,县级列为aabbcc,
    如果你的动态加载已经解决,那就是先选省下拉框,select * form table where code like 'aa__00',加载市级数据,再选择市级下拉框,select * form table where code like 'aabb__'加载县级数据,完成!
      

  6.   

    我的数据库是有两个字段,第一个字段code第1、2位为34代表安徽,第3、4位为12代表肇阳市,5、6位为21代表临泉县。
    另一个字段name就是安徽省肇阳市临泉县。
      

  7.   

    public class Hello {
        public List[] getList(String c) {
         List list1 = new ArrayList();
             List list2 = new ArrayList();
             List list3 = new ArrayList();
             try {
                Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver");
                Connection cnn=DriverManager.getConnection("jdbc:microsoft:sqlserver://127.0.0.1:1433;DatabaseName=xincheng;user=sa;password=111111;");
                Statement st=cnn.createStatement();
                String sql = "select uint_code,uint_name from GAB_UINT_DICT_DATA where uint_code like '"+c+"%'";
                ResultSet rs=st.executeQuery(sql);
               
    //          /*查询
                while(rs.next()){
                 String ucode = rs.getString(1);
                 String uname = rs.getString(2);
                
                 for(int i = 0;i<uname.length();i++){
                 for(int j= 0;j<uname.length();j++)
                 for(int k = 0;k<uname.length();k++)
                 {
                 if(i>=5 ||j>=10||k>=15) break;
                             //有省市县的情况
    if(uname.charAt(i)=='省' && uname.charAt(j)=='市' && uname.charAt(k)=='县')
                     {
                 String sheng = uname.substring(0,i+1);
                     list1.add(sheng);
                     String s = uname.substring(i+1,j+1);
                     list2.add(s);
                     String x = uname.substring(j+1,k+1);
                     list3.add(x);
                     break;
                     }
                 //只有省市或省县的情况
                 else if((uname.charAt(i)=='省' && uname.charAt(k)=='县'&& uname.charAt(j)!='市') || (uname.charAt(i)=='省' && uname.charAt(j)=='市'&& uname.charAt(k)!='县'))
                     {
                 String sheng = uname.substring(0,i+1);
                 list1.add(sheng);
                     if(uname.charAt(j)=='市'){
                     String s = uname.substring(i+1,j+1);
                     list2.add(s);
                     break;
                  } 
                  if(uname.charAt(k)=='县'){
                     String x = uname.substring(i+1,k+1);
                     list3.add(x);
                     break;
                     }
                     break;
                     }
                 }
                 }
                }
                st.close();
                cnn.close();
            } catch (Exception ex) {
                System.out.println("XXX");
                ex.printStackTrace();
            }
           //过滤重复的省
            for(int n = 0;n<list1.size();n++)
             for(int m = list1.size()-1;m>n;m--){
             String str = list1.get(n).toString();
             if(str.equals(list1.get(m)))
             list1.remove(m);
             }
            //过滤重复的市
            for(int n = 0;n<list2.size();n++)
             for(int m = list2.size()-1;m>n;m--){
             String str = list2.get(n).toString();
             if(str.equals(list2.get(m)))
             list2.remove(m);
             }
            //过滤重复的县
            for(int n = 0;n<list3.size();n++)
             for(int m = list3.size()-1;m>n;m--){
             String str = list3.get(n).toString();
             if(str.equals(list3.get(m)))
             list3.remove(m);
             }
            /*
            for(int n = 0;n<list1.size();n++){
             System.out.println("省:"+list1.get(n));
    }
            for(int n = 0;n<list2.size();n++){
             System.out.println("市:"+list2.get(n));
    }
            for(int n = 0;n<list3.size();n++){
             System.out.println("县:"+list3.get(n));
    }
    //System.out.println("省:"+sheng);
    //System.out.println("市:"+s);
    //System.out.println("县:"+x);
    System.out.println("--------");

    */
            //将省市县存入列表
            List[] list=new List[3];
            list[0]=list1;
            list[1]=list2;
            list[2]=list3;
            return list;
        }
        public static void main(String args[])
        {
        
        }
    }
      

  8.   

    这是我得到省市县,存入list的代码,我就是想获得这三个list对应的数据库中code的编号。
      

  9.   

    看出来了,
    while(rs.next()){
    String ucode = rs.getString(1);
    String uname = rs.getString(2);for(int i = 0;i<uname.length();i++){
    for(int j= 0;j<uname.length();j++)
    for(int k = 0;k<uname.length();k++)
    {.......
    4重循环,I服了U为什么不用list.add(map)结构或直接用sql语句查出来赋值
      

  10.   

    因为有好几种可能性,我现在的list1里已经存放了省,list2已经存放了所有的市,list3已经存放了所有的县了,我如何能对应呢?我还要将他们放入下拉框啊value对应编号,text对应list1,list2,list3,这个text的我已经做好了,就是这个 value的有问题啊。能不能给些代码让我参考参考啊?
      

  11.   

    我上边已经说了,数据字典好好规划一下,
    你要非要这样作就用一个Map 替代现在list里的string,
    先map.put("code",代码);,再map.put("city",地名);
    然后list.add(map);
    这样你的地名和代码是一一对应的,你要非要用list.add(string)来作,就要把ArrayList();换成LinkedList,ArrayList不是队列,不会保持队形,然后再建个list直接存放代码
      

  12.   

    好象存在map里的数据是没有顺序的,每次位置都不一样,是吗?
      

  13.   

    map好象是个键值对的关系,我通过这个city 得到这个地名。这样我将city寸入select做为参数传递好象有点问题啊。
      

  14.   

    map里面的是object,取出来要tostring一下
      

  15.   

    我能不能在截取省市县的同时截取code呢?