在java 中写修改的dao方法 !!!!!在线等

在orcale数据库中有2张表有关系
--创建大分类名表tb_lm
create table tb_lm(
lm_id number not null primary key,--类名的id
lm_name varchar2(20) not null,--类名的名字
lm_date date default sysdate --时间
)

create table tb_xfl(
xflid number not null primary key,
xfllmid number not null references tb_lm(lm_id),
xflname varchar2(20) not null,
xfldate date default sysdate
)

就行修改
public int getUpdate(XLm u,Lm a) {
// TODO Auto-generated method stub
int n=0;

    String sql="update tb_xfl set  xfllmid=?,xflname=?  where xflname='"+u.getXflname()+"' and  xfllmid in (select lm_id from tb_lm where lm_name='"+a.getLm_name()+"')";
    try {
      con=DBHelper.getcon();
      ps=con.prepareStatement(sql);
      ps.setInt(1, u.getXfllmid());
      ps.setString(2, u.getXflname());

      n=ps.executeUpdate();
    } catch (Exception e) {
        // TODO: handle exception
        e.printStackTrace();
    }
    return n;
}

}这是我写的有报错,求大神解决
有2张表在线等

你得把你报的错也写进来。
看你写的代码也没什么毛病

request.setCharacterEncoding("UTF-8");
//response.setCharacterEncoding("text/html;CharaUTF-8");
//response.setCharacterEncoding("text/html;charset=utf-8");
response.setContentType("text/html;charset=utf-8");
//获取传过来的值
int parentId=Integer.parseInt(request.getParameter("parentId"));
String className=request.getParameter("className");

  out.print(parentId+"   "+className);
  XLm u=new XLm(parentId,className);

  int n=new XLmBizimpl().getUpdate(u,a);
  if(n>0){
      out.print("<script>alert('修改成功');location.href='manage-result.jsp'</script>");
  }else{
      out.print("<script>alert('修改失败');location.href='productClass-modify.jsp'</script>");
  }

改成这样了:

String sql="update tb_xfl set xfllmid=?,xflname=? where xflname='"+u.getXflname()+"' and xfllmid in (select lm_id from tb_lm where lm_name='"+a.getLm_name()+"')";

先说明一下,你这么做有缺陷,如果tb_lm表中的没有你要修改对应的id会报exception的