public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
//防止乱码
response.setContentType("text/html");
request.setCharacterEncoding("utf-8");
//把要修改成的值接收
String name=request.getParameter("name");
String address=request.getParameter("address");
String sid=request.getParameter("sid");
//写链接数据库代码,获得conn对象,因不知道你链接的是数据库
……
//去数据库修改
String sql="update student set name= ?,address=? where Studentid=?";
PreparedStatement stm=conn.prepareStatement(sql);
stm.setString(1,name);
stm.setString(2,address);
stm.setString(3,sid);
stm.executeUpdate();
//修改好了,下一部一般是跳转页面。
response.sendRedirect("success.jsp");
}
但是一般不推荐这么写,可以用MVC模式,写一个实体类封装传过来的数据,然后把连接数据库还有修改的方法写到Dao层里面去,然后在servlet中直接调用dao层进行处理。这次层次清晰很多,方便维护和修改。也不用每次去获得连接对象了(很费资源)。
补充:
我觉得你查一下2个地方:
1.把获取到3个值进行输出,看是否获得成功并正确。
2.有个地方不是太明白,update student set id= ?,name=? where Student address=?,这句话的意思是根据地址找出学生,然后把ID和name给改了,是不是写错了?一般是根据id查。
,PreparedStatement ps = conn.prepareStatement(sql);
PreparedStatement stm=conn.prepareStatement(sql);
这两句重复了,但代码不全,不知你这句PreparedStatement ps = conn.prepareStatement(sql);
想表达什么意思
sql语句出错,我想你应该要做的是根据学生ID来修改学生的名字和地址,那么应该这样写:
update student set address= ?,name=? where id=?
stm.setInt(0,id);
stm.setString(1,name);
stm.setString(2,address);//从0开始
那你来接数据库成功了没有? 连接的是什么数据库?
是修改还是新增还是删除