//opr
//修改
public boolean update(Teacher teacher){
int flag = 0;
sql = "update Teacher set tname=?,password=?,tage=?,tcollege=?,tsex=? where tno=?";
try {
psmt = con.prepareStatement(sql);
psmt.setString(1, teacher.getTname());
psmt.setString(2, teacher.getPassword());
psmt.setString(3, teacher.getTcollege());
psmt.setString(4, teacher.getTsex());
psmt.setString(5, teacher.getTno());
psmt.setInt(6, teacher.getTage());
flag = psmt.executeUpdate();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return flag>0?true:false;
}
//servlet
if(oprType.equals("update")){//图书修改
//1.接收表单参数
String tno = new String(request.getParameter("teno").getBytes("ISO-8859-1"),"utf-8");
String password = new String(request.getParameter("tepassword").getBytes("ISO-8859-1"),"utf-8");
String tname = new String(request.getParameter("tename").getBytes("ISO-8859-1"),"utf-8");
String tsex = new String(request.getParameter("tesex").getBytes("ISO-8859-1"),"utf-8");
String tage = new String(request.getParameter("teage").getBytes("ISO-8859-1"),"utf-8");
String tcollege = new String(request.getParameter("tecollege").getBytes("ISO-8859-1"),"utf-8");
//2.封装student对象
Teacher tea = new Teacher();
tea.setTno(tno);
tea.setPassword(password);
tea.setTname(tname);
tea.setTsex(tsex);
tea.setTage(Integer.parseInt(tage));
tea.setTcollege(tcollege);
//3.调用StudentOpr的添加方法
boolean flag = so.update(tea);
//4.根据结果显示页面
if(flag){
nextPage = "TeacherInfoServlet?type=list";
}else{
out.print("<h3>修改失败,请重试!</h3>");
}

解决方案 »

  1.   

    我修改数据,JSP错误提示“在将 nvarchar 值 '软包学院' 转换成数据类型 int 时失败。”
    我“软包学院”的这个数值定义的是nvarchar型我就是不知道哪里出错了
      

  2.   

    怎么会隐式转换?检查一下你的SQL代码。
      

  3.   

    sql = "update Teacher set tname=?,password=?,tage=?,tcollege=?,tsex=? where tno=?";
    try {
    psmt = con.prepareStatement(sql);
    psmt.setString(1, teacher.getTname());
    psmt.setString(2, teacher.getPassword());
    psmt.setString(3, teacher.getTcollege());
    psmt.setString(4, teacher.getTsex());
    psmt.setString(5, teacher.getTno());
    psmt.setInt(6, teacher.getTage());
    flag = psmt.executeUpdate();
    } catch (SQLException e) {
    // TODO Auto-generated catch block
    e.printStackTrace();
    }红色部分,楼主看看是否合适,年龄给的值是大学名???
      

  4.   

    这个肯定会报错,因为 软包学院 是文字,不可能转化为 int 整数的所以最好通过where 查询条件,多虑掉文字的字符串,然后转化为int,这样就不会报错了,比如:select * 
    from 表
    where isnumeric(字段) = 1