pojo 里面对应表的属性为Integer,数据库表字段某一字段指定可以为空,不给该属性赋值,当用insert语句添加数据进入该表时,报空指针异常,是为什么?
Servlet给该对象设值:
Productorderitem productorderitem = new Productorderitem();
productorderitem.setProductorderitemNumber(Integer.parseInt(product_number));
productorderitem.setProductorderitemSize(ProductSizeUtil.getSizeByString(product_size));
productorderitem.setProductorderitemPrice(product.getProductPrice());
productorderitem.setProductorderitemProductId(Integer.parseInt(productId));
dao层实现类的方法代码:
public boolean insertProductorderItem(Productorderitem productorderitem, Connection conn) throws Exception {
String sql = "insert into productorderitem(productorderitem_number,productorderitem_size,productorderitem_price,productorderitem_product_id,productorderitem_order_id,productorderitem_user_id,productorderitem_userMessage) values(七个?)";
PreparedStatement ps = conn.prepareStatement(sql);
ps.setInt(1, productorderitem.getProductorderitemNumber());
ps.setInt(2, productorderitem.getProductorderitemSize());
ps.setDouble(3, productorderitem.getProductorderitemPrice());
ps.setInt(4, productorderitem.getProductorderitemProductId());
ps.setInt(5, productorderitem.getProductorderitemOrderId());
ps.setInt(6, productorderitem.getProductorderitemUserId());
ps.setString(7, productorderitem.getProductorderitemUserMessage());
int row = ps.executeUpdate();
if(row>0){
return true;
}
DBHelper.closePreparedStatement(ps);
return false;
}
错误位置可以定位吗
是不是你integer类型数据赋值取值时候的问题
在赋值取值前判断一下是不是为空或者null
为空或者null时不进行赋值取值
productorderitem.setProductorderitemNumber(Integer.parseInt(product_number))
ps.setInt(1, productorderitem.getProductorderitemNumber());
https://blog.csdn.net/weixin_48240945/article/details/120323300
https://blog.csdn.net/weixin_43080383/article/details/120709831
可以给数据库中 对应表的字段 设置默认值 比如为 0 ,这样插入的时候可以写该字段 ,如果后台代码逻辑需要赋值的话字段也要定义为int 类型 这样 空字符串你就是赋值也会编译不通过
原代码
productorderitem.setProductorderitemProductId(Integer.parseInt(productId));
将上面这一行代码修改为下面
if(productId == null){
productorderitem.setProductorderitemProductId(0);
}else {
productorderitem.setProductorderitemProductId(Integer.parseInt(productId));
}
当一个数是null的时候不能使用Integer.parseInt()方法,这样会报错,例如下面的例子直接将null放入到Integer.parseInt()中转换就会报错空指针异常
你这两个错了