我想从数据库里面导出一些字段的value,我写了这样一个函数DateBaseToExcel(String tableName,String[] ziduanName),这里面第一个参数是表名称,第二个是其中的一些字段名,用户可以根据自己的需求来导出一些字段,譬如说:"Path","CDTag","Path","CDTag","FeatureState","IsTag","IndexNo","OriginPath","MediaType"等,然后有的用户只需要"Path","CDTag",而有的用户需要"Path","IsTag","IndexNo","OriginPath",也就是说导出的列数也不固定,然后我在那个函数体里面怎样来写SQL语句呢,我们可以根据用户输入字符串数组求的数组的长度为length,然后SELECT ? FROM '" + tableName + "' "这一部分怎么写?在线等

解决方案 »

  1.   

    把所有的都查出来吧,select * from xxx;然后他要什么你给他返回什么。
      

  2.   

    拼接sqlString fields = "";
    if (ziduanName != null ) {
    for (int i=0; i < ziduanName.length;i++ ) {
    fields += fields +",";
    if (i == ziduanName.length) {
    fields += fields +",";
    }
    }
    }StringBuffer sb = new StringBuffer("select "+ fields +" from table_name .........." );
    你还可以做个数据字典,用于记录某个表需要导出某个字段,这样就可以动态的实现了
      

  3.   

        
      private static void DateBaseToExcel(String tableName, String[] ziduanName) {    String sqlString = "select * from " + tableName;
        String colName = "";
        for (int i = 0; i < ziduanName.length; i++) {
          if (i == ziduanName.length - 1)
            colName = colName + ziduanName[i];
          else
            colName = colName + ziduanName[i] + ",";
        }    sqlString = sqlString.replace("*", colName);
        System.out.println(sqlString);  }
      

  4.   

    的确可以动态的来读取,如果动态的话,你完全可以把table_name也做个参数传过来,这样一个sql语句就全解决了。
    但我不太同意这种做法。
    我觉得:可以全部查找出来做成一个User对象(假设),然后根据用户用到不同的列,返回给他User1,User2...
      

  5.   

    lz你怎么给分的,for循环里面的if永远都不会成立!
    我的方法是经过测试了的。