我正在尝试根据"replace"
的数据更新我的数据库。 replace
有几列数据,我想相应地更新数据库abcd
中的这些列。
但是,当我运行此代码时,只有最后一列表示最后一个数据在DB中更新,我想在这种情况下迭代不正确。
所以请帮助我。感谢您的建议。
private static void updateDB(HashMap<String, HashMap<Integer, String>> map) throws ConfigException, SQLException {
MConfig config = ScriptsTools.init();
ConnPool select = ScriptsTools.openPool("database", config);
Connection write = select.getWrite();
StringBuilder replace = new StringBuilder();
replace.append("REPLACE INTO abcd (a,b,c,d,e) values ");
Iterator<Entry<String, HashMap<Integer, String>>> it = map.entrySet().iterator();
while (it.hasNext()) {
Map.Entry<String, HashMap<Integer, String>> pair = it.next();
replace.append("('");
replace.append(pair.getKey());
replace.append("','");
replace.append(pair.getValue().get(2));
replace.append("','");
replace.append(pair.getValue().get(11));
replace.append("',");
replace.append("now()");
replace.append(",");
replace.append("now()");
replace.append("), ");
}
replace.delete(replace.length()-2, replace.length());
//System.out.println("Query : "+replace.toString());
String words = replace.toString();
System.out.println(words);
Statement st = write.createStatement();
st.executeUpdate(replace.toString());
}
答案 0 :(得分:1)
因为您使用Statement
而不是PreparedStatement
,所以使用以下命令可以轻松打印要在数据库上执行的查询
System.out.println(replace.toString());
接受并在首选数据库客户端中执行它,并检查它是否按预期工作。