@ResponseBody
@RequiresPermissions("msg:msgInner:view")
@RequestMapping(value = {"test", ""})
public String test(HttpServletRequest request){
int value1 = 1;
int value2 = 1;
int value3 = 1;
try (Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/jeesite", "root", "282469907");
Statement statement = connection.createStatement()){
statement.executeUpdate("UPDATE jeesite.cfpdata SET 衣 = " + request.getParameter("value1"));
statement.executeUpdate("UPDATE jeesite.cfpdata SET 食 = " + request.getParameter("value2"));
statement.executeUpdate("UPDATE jeesite.cfpdata SET 住 = " + request.getParameter("value3"));
statement.executeUpdate("UPDATE jeesite.cfpdata SET 行 = " + request.getParameter("value4"));
statement.executeUpdate("UPDATE jeesite.cfpdata SET 用 = " + request.getParameter("value5"));
statement.executeUpdate("UPDATE jeesite.cfpdata SET 总计 = " + request.getParameter("value6"));
statement.executeBatch();
}catch (SQLException e){
e.printStackTrace();
}
return request.getParameter("value1");
}
数据库获取不了对应的value值,只能获取第一个,其他都为null是为什么?
基于Monster 组和GPT的调写:
由于在每个语句中使用了不同的参数名,因此只有第一个语句中的 value1 参数被正确地获取了。在其他更新语句中,你需要将参数名更改为对应的值,例如,第二个更新语句中应该使用 value2 参数。
@ResponseBody
@RequiresPermissions("msg:msgInner:view")
@RequestMapping(value = {"test", ""})
public String test(HttpServletRequest request){
try (Connection connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/jeesite", "root", "282469907");
Statement statement = connection.createStatement()){
String sql = "UPDATE jeesite.cfpdata SET 衣 = ?, 食 = ?, 住 = ?, 行 = ?, 用 = ?, 总计 = ?";
PreparedStatement ps = connection.prepareStatement(sql);
ps.setString(1, request.getParameter("value1"));
ps.setString(2, request.getParameter("value2"));
ps.setString(3, request.getParameter("value3"));
ps.setString(4, request.getParameter("value4"));
ps.setString(5, request.getParameter("value5"));
ps.setString(6, request.getParameter("value6"));
ps.executeUpdate();
}catch (SQLException e){
e.printStackTrace();
}
return "更新成功";
}
用了一个 PreparedStatement 对象来执行更新语句,这样可以用 setString() 方法来设置每个参数的值。另外,用了一个包含所有参数的单一 SQL 语句,而不是多个单独的语句,这样可以更好地保证数据的一致性。