上次写过一个,当时感觉还可以,现在看看也蛮不爽的。 刚刚用到JDBC写DAO时想到这样写,感觉还可以,不知大伙认为如何呢。。。 传一个对象过来进行更新操作,对旬具体内容不管,只要用标识列就OK了。。。,动态构造Update语句 public void updateArard(Award award) throws SQLException ... { String teram = award.getTeram(); java.text.DateFormat df = new java.text.SimpleDateFormat("yyyy-MM-dd"); Date time = null; try ...{ time = df.parse(award.getTime()); } catch (ParseException e) ...{ e.printStackTrace(); } String rs = award.getRs(); String message = award.getMessage(); String string1 = award.getString1(); String sql = "update award set"; List list = new ArrayList(); if(teram != null || !"".equals(teram)) ...{ sql += " teram=?,"; list.add(teram); } if(time != null || !time.equals(null)) ...{ sql += " time=?,"; list.add(time); } if(rs != null || !"".equals(rs)) ...{ sql += " rs=?,"; list.add(rs); } if(message != null || !"".equals(message)) ...{ sql += " message=?,"; list.add(message); } if(string1 != null || !"".equals(string1)) ...{ sql += " string1=?,"; list.add(string1); } String psql = sql.substring(0, sql.length()-1) + " where id=?"; System.out.println("psql == "+psql); pstmt = con.prepareStatement(psql); int i=1; for(; i<=list.size(); i++)...{ System.out.println("i=="+i); pstmt.setObject(i, list.get(i-1)); } pstmt.setInt(i++, award.getId()); pstmt.executeUpdate(); pstmt.close(); }