刚发的帖子找不到了...第一次发帖见谅;内容如下
目前遇到一个问题,关于多条修改的问题;
如果一次要修改多条数据并存储的话该如何操作;
单条我是这么做的;
String[] t=request.getParameterValues("t");然后插入LIST循环
PreparedStatement pst = (PreparedStatement) conn.prepareStatement
("INSERT INTO ……¥%& (*&……%#!!) VALUES ( ?, ?, ?,?)");
for (int i = 0; i < list.size(); i++)
如果多条怎么处理,假设一行有3个字段分别是 ID,NAME,DATE的话
同时接收3个字段如何做个循环...如果是要用bo set,get封装的话如何处理?
我该如何取值如何循环?谢谢指点!新手没有头绪;
请告诉个思路最好能有代码更直观一点;
5分钟刷新一次页面谢谢各位!
不知道你额界面是什么样的
你可以在界面用js构造好参数。。然后传递到后台来解析
比如:
name age numb
//循环
那么后台可以获取数组
或者js构造参数
var idArr=document.getElementsByName("id");
类似的构造参数,可以构造成字符串,用分隔符,后台解析
至于修改的话,如果修改后的新值都是一样的,比如批量审核,将状态改为审核,这中情况无需循环操作,可以选择
update table set status = 1 where id in('001','002')
类似的方式
另一种批量修改,改后的新值都不一样,那可以选择循环预编译sql
update table set column1 = ?,column2=?.. where id=?
这中情况对数据有一定要求: 数据应该正确对应
比如id 存在一个数组,其他各字段值存放在各自的数组
但应该是对应的
{'001','002','003'}
{'value1','value2',value3''}
这样给sql传递参数就很方便
说得不是很详细。。不知道是否了解了我的意思
下面的代码是个例子
[code="java"]
public int autoAssign(Map params) throws SQLException {
String sql = "update client set flag=1,assigntime='"
+ Convert.getNowDateTime() + "',followman=? where clientid=?";
Connection conn = null;
PreparedStatement pstmt = null;
int result = 0;
try {
conn = DBConn.getConnection();
conn.setAutoCommit(false);
pstmt = conn.prepareStatement(sql);
Set keys = params.keySet();
for (String key : keys) {
pstmt.setString(1, params.get(key));
pstmt.setString(2, key);
result += pstmt.executeUpdate();
}
conn.commit();
pstmt.close();
} catch (Exception e) {
e.printStackTrace();
conn.rollback();
return 0;
} finally {
DBConn.closeConnection(conn);
}
return result;
}
[/code]
当数据很多时,考虑 addBatch();
我这里的参数是Map 一个存id 一个存修改的值,这样一一对应;
如果你修改的值多,可以用其他方式存