问题描述
刚发的帖子找不到了...第一次发帖见谅;内容如下 目前遇到一个问题,关于多条修改的问题; 如果一次要修改多条数据并存储的话该如何操作; 单条我是这么做的; 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分钟刷新一次页面谢谢各位! 问题补充:anyasir 写道
解决方案
不知道你额界面是什么样的你可以在界面用js构造好参数。。然后传递到后台来解析比如:name age numb<for> //循环<tr><td><intupe type=checkbox name="id" value=""></td><td><input type = text name="name" value=""></td><td><input type = text name="age" value=""></td><td><input type = text name="numb" value=""></td></tr></for>那么后台可以获取数组或者js构造参数var idArr=document.getElementsByName("id");类似的构造参数,可以构造成字符串,用分隔符,后台解析
解决方案二:
下面的代码是个例子public int autoAssign(Map<String, String> 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<String> 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;}当数据很多时,考虑 addBatch();我这里的参数是Map 一个存id 一个存修改的值,这样一一对应;如果你修改的值多,可以用其他方式存
解决方案三:
至于修改的话,如果修改后的新值都是一样的,比如批量审核,将状态改为审核,这中情况无需循环操作,可以选择 update table set status = 1 where id in('001','002')类似的方式另一种批量修改,改后的新值都不一样,那可以选择循环预编译sqlupdate table set column1 = ?,column2=?.. where id=?这中情况对数据有一定要求: 数据应该正确对应比如id 存在一个数组,其他各字段值存放在各自的数组但应该是对应的{'001','002','003'}{'value1','value2',value3''}这样给sql传递参数就很方便说得不是很详细。。不知道是否了解了我的意思