model层操作时,数据库中的一些列不能为null,一些列不能接受String类型的存入时,一些解决的办法

来源:互联网 发布:网络文化建设重点内容 编辑:程序博客网 时间:2024/05/09 08:22

在电信资费管理系统中

数据库中的套餐名不能为空

如果用户增加新的套餐,但并未输入套餐名,那么就会导致DAO操作出现错误

解决办法:

if(name==null ||name.equals("")){

res.sendRedirect("findAll.go");

return;

}

则后续代码都不执行。

如果套餐中,有一些套餐属性默认为空,那么需要加上判断来避免空指针异常

解决办法:

if(basecost!=null && !basecost.equals("")){

c.setBaseCost(new Double(basecost)); 

}

if(baseduration!=null && !baseduration.equals("")){

c.setBaseDuration(new Integer(baseduration));

}

if(unitcost!=null && !unitcost.equals("")){

c.setUnitCost(new Double(unitcost));

}

同时在DAO操作时

这三个Integer和Double类型的数据存入时,可能为空

那么需要:

ps.setObject(2, c.getBaseDuration());

ps.setObject(3, c.getBaseCost());

ps.setObject(4, c.getUnitCost());

DAO操作的完整方法

public void save(Cost c){

Connection conn =null;

try {

conn = DBUtil.getConnection();

String sql ="insert into cost_名字 "

+ "values(cost_seq_名字.nextval,"

+"?,?,?,?,1,?,sysdate,null,?) ";

PreparedStatement ps = conn.prepareStatement(sql);

ps.setString(1,c.getName());

ps.setObject(2,c.getBaseDuration());

ps.setObject(3,c.getBaseCost());

ps.setObject(4,c.getUnitCost());

ps.setString(5,c.getDescr());

ps.setString(6,c.getCostType());

ps.executeUpdate();

} catch (Exceptione) {

e.printStackTrace();

thrownew RuntimeException("增加新套餐失败");

}finally{

DBUtil.closeConnection(conn);

}

}

servlet里的addCost方法

protected void addCost(HttpServletRequest req, HttpServletResponse res) throws ServletException, IOException {

//设置JSP中提交form时的method为post,同时把请求编码设置为utf-8

req.setCharacterEncoding("utf-8");

//接受表单请求中附带的数据

String name =req.getParameter("name");

String descr =req.getParameter("descr");

String costType =req.getParameter("costtype");

String basecost =req.getParameter("basecost");

String baseduration =req.getParameter("baseduration");

String unitcost =req.getParameter("unitcost");

//实例化Cost对象并把接收获得的参数set给Cost

Cost c = new Cost();

if(name==null ||name.equals("")){

res.sendRedirect("findAll.go");

return;

}

c.setName(name);

c.setDescr(descr);

c.setCostType(costType);

if(basecost!=null && !basecost.equals("")){

c.setBaseCost(new Double(basecost)); 

}

if(baseduration!=null && !baseduration.equals("")){

c.setBaseDuration(new Integer(baseduration));

}

if(unitcost!=null && !unitcost.equals("")){

c.setUnitCost(new Double(unitcost));

}

//调用DAO里的save方法

CostDao dao =new CostDao();

dao.save(c);

//保存后,重定向到查询所有套餐页面

res.sendRedirect("findAll.go");

}









0 0
原创粉丝点击