怎么从数据库读取配置信息? 本帖最后由 miraclestar 于 2014-09-15 19:02:40 编辑 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 value值对应的java中的类型不一样? 这个怎么理解? 数据库里是这样:timeout ,1000frequence,3.8cronname,beijingjava里有int timeout;float frequence;String cronname;怎么在java里把这些数据读进来? ResultSet 中,getString(columnIndex) 可以通读所有列数据可以通过getString 来获取key 和 对应value ,然后再转为需要的类型 全部按照String的方式读取。需要其他的类型,再转换就是了。 都没看明白啊数据库里是这样:KEY | VALUEtimeout |1000frequence | 3.8cronname | beijing然后读取数据库‘int timeout;float frequency;String cronname;while(rs.next()){//问题来了,获取的KEY也是个字符串,怎么对应到上面几个变量? rs.getString("KEY");//这个是什么??? rs.getString("VALUE");}反射? 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"); } }就这个思路,根据第一列的列值,判断第二列的数据类型,然后拿到自己想要的数据信息 if (cl1.equals("timeout")) { timeout = Integer.parseInt(cl2); } else if (cl1.equals("frequency")) { frequency = Float.valueOf(cl2); }上面笔误,写错了,应该是第二列的值 while(rs.next()){ timeout = Integer.parseInt(rs.getString("timeout")); frequency = Float.valueOf(rs.getString("frequency ")); cronname = rs.getString("cronname"); ……}我习惯这么写,因为实际运用中key对应的value类型已经是确定的了,这里完全可以这样直接转化。 先全部当作string读取,然后用trycatch尝试转型为int,try里面赋值给int类型,catch里面的赋值给string类型 用反射的实现了下,感觉方便很多;其中用到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()); } 刚学java,求教这是为什么? 关于packpage和 .class调用的问题 STRUTS ACTION 修改问题 怎么用Java编程来控制光驱的关闭与弹出? 求助?eclipse怎么装?? 如何把一个自定义类转化成二进制数组?--在线等待。。。 请各路高手介绍几本能对学习java有所提高的书~中英文都行~~! 100分求简单实体bean的代码---在线等 很急!有关jacob的! 关于外部包的概念 java虚拟机内存回收 先回收堆,再回收栈???? 请问用Java如何以字节为单位读取一个非文本文件
timeout ,1000
frequence,3.8
cronname,beijingjava里有
int timeout;
float frequence;
String cronname;怎么在java里把这些数据读进来?
可以通过getString 来获取key 和 对应value ,然后再转为需要的类型
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");
}反射?
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");
}
}就这个思路,根据第一列的列值,判断第二列的数据类型,然后拿到自己想要的数据信息
timeout = Integer.parseInt(cl2);
} else if (cl1.equals("frequency")) {
frequency = Float.valueOf(cl2);
}上面笔误,写错了,应该是第二列的值
while(rs.next()){
timeout = Integer.parseInt(rs.getString("timeout"));
frequency = Float.valueOf(rs.getString("frequency "));
cronname = rs.getString("cronname");
……
}我习惯这么写,因为实际运用中key对应的value类型已经是确定的了,这里完全可以这样直接转化。
其中用到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()); }