日期:2014-05-17  浏览次数:20858 次

servlet 想更新数据库多列数据,最终只更新了第一列,求指教!
我现在想实现一个servlet更新数据库中的多列数据
但是实现出来的是:它只更新了要更新的第一个数据;为什么?好郁闷。。我已经验证过,参数的传入是没有问题的;

代码如下:
String userid=request.getParameter("userid");//获取当前员工的编号以备更新
System.out.println(userid);
String username=request.getParameter("username");//获取编辑过的值
String usertele=request.getParameter("usertele");
String userqualifiction=request.getParameter("userqualifiction");
String userfamily=request.getParameter("userfamily");
System.out.println(userfamily);
String useradmitdate=request.getParameter("useradmitdate");
String userpassword=request.getParameter("userpassword");
String updatesql="update myuser set name='"+username+"' where uuid='"+userid+"'";
//"update myuser set name='"+username+"' , tele='"+usertele+"' , qualification='"+userqualifiction+"', family='"+userfamily+"' , admitdate='"+useradmitdate+"' , password='"+userpassword+"' where uuid='"+userid+"'";


//执行更新语句
try {
Statement st=con.createStatement();
int x=st.executeUpdate(updatesql);//返回的值是表示影响的行数
System.out.println(x);
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.print("更新出错啦");
e.printStackTrace();
}
//关闭连接
try {
con.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
System.out.print("连接关闭出错啦");
e.printStackTrace();
}
//重新定向
response.sendRedirect("../basic/user_list.jsp");
求大侠指教!

------解决方案--------------------
where uuid='"+userid+"'"

你的表中不可能有多行uuid一样的值吧?你的uuid是啥意思?违背了uuid的原则吧?
------解决方案--------------------
String updatesql="update myuser set name='"+username+"' where uuid='"+userid+"'";
//"update myuser set name='"+username+"' , tele='"+usertele+"' , qualification='"+userqualifiction+"', family='"+userfamily+"' , admitdate='"+useradmitdate+"' , password='"+userpassword+"' where uuid='"+userid+"'";

在这后面System.out.println(updatesql); 看看有什么错,直接复制到数据库执行看行不行
你这拼接的眼睛都看花了

推荐用PreparedStatement一目了然,不会出错

------解决方案--------------------
估计是当主键用,楼主是不是只更新了第一个字段,想更新多个字段,而不是多条数据
------解决方案--------------------
探讨

where uuid='"+userid+"'"

你的表中不可能有多行uuid一样的值吧?你的uuid是啥意思?违背了uuid的原则吧?

------解决方案--------------------
如果不是主键,你想更新含有uuid相同的所有行数据的话,用replace函数

例如: update (select current_dept from rec_dept_candidate where current_dept like '''%''') set current_dept =replace(current_dept,'''','')