1.有一个dao实现类有一个update方法。
如下:public boolean updateUser(User user) {
Connection conn=null;
PreparedStatement pstmt=null;
try{
conn=DAOUtil.getConnection();
pstmt=conn.prepareStatement("update user set realname=?,password=?,sex=?,id_card=?,age=?,address=?,phone=?,mobile=?,email=?,country=?,job=? where nickname=?");
int i=1;
pstmt.setString(i++,user.getRealname());
pstmt.setString(i++, user.getPassword());
pstmt.setInt(i++,user.getSex());
pstmt.setString(i++, user.getIdCard());
pstmt.setInt(i++, user.getAge());
pstmt.setString(i++, user.getAddress());
pstmt.setString(i++, user.getPhone());
pstmt.setString(i++,user.getMobile());
pstmt.setString(i++,user.getEmail());
pstmt.setString(i++, user.getCountry());
pstmt.setString(i++, user.getJob());
pstmt.setString(i++, user.getNickname());
int j=pstmt.executeUpdate();
return j>0;
}catch(SQLException e){e.printStackTrace(); }

finally{
try{
if(pstmt!=null)pstmt.close();
if(conn!=null)conn.close();
}catch(SQLException e){e.printStackTrace();}
}
return false;
}
2.有一个update的servlet,叫testservlet.java.
有代码如下:
String username = request.getParameter("nickname");
String realname = request.getParameter("realname");
String pwd = request.getParameter("pwd");
String pwd2 = request.getParameter("pwd2");
String email = request.getParameter("email");
String address = request.getParameter("address");
String phone = request.getParameter("phone");
String mobile = request.getParameter("mobile");
String idCard = request.getParameter("idCard");
String age = request.getParameter("age");
String country = request.getParameter("country");
String job = request.getParameter("job");
String sex = request.getParameter("sex");user.setNickname(username);
user.setRealname(realname);
user.setPassword(pwd);
//注意转型。
user.setSex(j);
user.setEmail(email);
user.setAddress(address);
user.setMobile(mobile);
user.setPhone(phone);
user.setIdCard(idCard);
//
user.setAge(i);
user.setCountry(country);
user.setJob(job);
//user.setRole_id(roleId);
boolean updateresult = userimpl.updateUser(user);
3.为什么这些数据一起更新时,程序无异常。
但只想更新某些数据时,程序就会出异常,各位大哥大姐,这个update动作应该怎样做啊?

解决方案 »

  1.   

    如果某些字段是必填的,然而你却想更新的字段不包括这些必填的,结果由于为空而报异常很正常啊
    你可以判断一下如果你只想更新部分字段的值,就不要把不需要更新的放入sql语句中,
    StringBuilder你应该用的上
    如果有值就append
      

  2.   

     还有,当撞到int型的数据时,这些数据必须明确填入值给它,其它的数据可以不填,更新都可以成功。
    不过,它会用空值代替原有的值,老大们,怎么解决啊?上面这位仁兄的方法,好像不是很明白啊。
      

  3.   

    jsp 如何做到只更新用户已输入的更新信息,而不更新库中原有的信息?      没明白