上次写过一个,当时感觉还可以,现在看看也蛮不爽的。
刚刚用到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();
}
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();
}