本帖最后由 miraclestar 于 2014-09-15 19:02:40 编辑

解决方案 »

  1.   

    value值对应的java中的类型不一样? 这个怎么理解?
      

  2.   

    数据库里是这样:
    timeout ,1000
    frequence,3.8
    cronname,beijingjava里有
    int timeout;
    float frequence;
    String cronname;怎么在java里把这些数据读进来?
      

  3.   

    ResultSet  中,getString(columnIndex) 可以通读所有列数据
    可以通过getString 来获取key 和 对应value ,然后再转为需要的类型
      

  4.   

    全部按照String的方式读取。需要其他的类型,再转换就是了。
      

  5.   

    都没看明白啊数据库里是这样:
    KEY | VALUE
    timeout |1000
    frequence | 3.8
    cronname  | beijing然后读取数据库‘int timeout;
    float frequency;
    String cronname;
    while(rs.next()){
    //问题来了,获取的KEY也是个字符串,怎么对应到上面几个变量?
        rs.getString("KEY");//这个是什么???
        rs.getString("VALUE");
    }反射?
      

  6.   


    while(rs.next()){
        String cl1 = rs.getString(1);
        String cl2 = rs.getString(2);
        if (cl1.equals("timeout")) {
            timeout = Integer.parseInt(cl1);
        } else if (cl1.equals("frequency")) {
            frequency = Float.valueOf("cl1");
        }
       
    }就这个思路,根据第一列的列值,判断第二列的数据类型,然后拿到自己想要的数据信息
      

  7.   

    if (cl1.equals("timeout")) {
            timeout = Integer.parseInt(cl2);
        } else if (cl1.equals("frequency")) {
            frequency = Float.valueOf(cl2);
        }上面笔误,写错了,应该是第二列的值
      

  8.   


    while(rs.next()){
        timeout = Integer.parseInt(rs.getString("timeout"));
        frequency = Float.valueOf(rs.getString("frequency "));
        cronname = rs.getString("cronname");   
        ……
    }我习惯这么写,因为实际运用中key对应的value类型已经是确定的了,这里完全可以这样直接转化。
      

  9.   

    先全部当作string读取,然后用trycatch尝试转型为int,try里面赋值给int类型,catch里面的赋值给string类型
      

  10.   

    用反射的实现了下,感觉方便很多;
    其中用到Beanutils包 
    public class ConfigInDB {    public static int testA = 123, testB = 3;
        public static String testC = "";    public static String print() {        return "testA:" + testA + ",testB:" + testB + ",testC:" + testC;
        }
    }
    public static void loadConfigInDB() {
            Class<ConfigInDB> configInDB = ConfigInDB.class;
            // Field field = config.getField(pair.key);
            Map<String, String> configs = new JavaDemoConfigDAO().queryAll();
            log.debug(ConfigInDB.print());
            if (configs != null && configs.size() > 0) {
                for (Map.Entry<String, String> conf : configs.entrySet()) {
                    String key = conf.getKey();
                    String value = conf.getValue();
                    try {
                        Field field = configInDB.getField(key);
                        // Method m = configInDB.getMethod("set" + changeFirst(field.getName()),
                        // field.getType());
                        // m.invoke(configInDB, ConvertUtils.convert(value, field.getType()));                    field.set(configInDB, ConvertUtils.convert(value, field.getType()));
                    } catch (SecurityException e) {
                        log.error("error", e);
                    } catch (NoSuchFieldException e) {
                        log.error("error,no such param, please delete from DB", e);
                    } catch (IllegalArgumentException e) {
                        log.error("error", e);
                        // } catch (NoSuchMethodException e) {
                        e.printStackTrace();
                    } catch (IllegalAccessException e) {
                        e.printStackTrace();
                        // } catch (InvocationTargetException e) {
                        e.printStackTrace();
                    }
                }
            }
            log.debug(ConfigInDB.print());    }