public void updatemnum(BigDecimal consignment_product_num , Integer salesorder_product_id) throws SQLException
{
System.out.println(consignment_product_num);
String sql = "Update DPC_SalesOrder_Product set SALESORDER_PRODUCT_MNUM=(select SALESORDER_PRODUCT_MNUM - ? from DPC_SalesOrder_Product where SALESORDER_PRODUCT_ID=? ) where SALESORDER_PRODUCT_ID=?";
// 设置参数值
ps = conn.prepareStatement(sql);
ps.setBigDecimal(1, consignment_product_num);
ps.setInt(2, salesorder_product_id);
ps.setInt(3, salesorder_product_id);
// 执行
ps.executeUpdate();
System.out.println(sql);
}参数BigDecimal consignment_product_num 传进来的值是1,数据库SALESORDER_PRODUCT_MNUM是12.1,这么一减之后应该是11.1,为什么SALESORDER_PRODUCT_MNUM变成了11啊,sql2000数据库,SALESORDER_PRODUCT_MNUM数据类型decimal(18,2)
{
System.out.println(consignment_product_num);
String sql = "Update DPC_SalesOrder_Product set SALESORDER_PRODUCT_MNUM=(select SALESORDER_PRODUCT_MNUM - ? from DPC_SalesOrder_Product where SALESORDER_PRODUCT_ID=? ) where SALESORDER_PRODUCT_ID=?";
// 设置参数值
ps = conn.prepareStatement(sql);
ps.setBigDecimal(1, consignment_product_num);
ps.setInt(2, salesorder_product_id);
ps.setInt(3, salesorder_product_id);
// 执行
ps.executeUpdate();
System.out.println(sql);
}参数BigDecimal consignment_product_num 传进来的值是1,数据库SALESORDER_PRODUCT_MNUM是12.1,这么一减之后应该是11.1,为什么SALESORDER_PRODUCT_MNUM变成了11啊,sql2000数据库,SALESORDER_PRODUCT_MNUM数据类型decimal(18,2)
Update DPC_SalesOrder_Product set SALESORDER_PRODUCT_MNUM=(select SALESORDER_PRODUCT_MNUM - 1 from DPC_SalesOrder_Product where SALESORDER_PRODUCT_ID=46 ) where SALESORDER_PRODUCT_ID=46可以得出12.1 - 1 = 11.1 ,为什么从写的那个方法里传参数就不行呢
ps.setString(1, consignment_product_num.toString());
System.out.println(consignment_product_num); 值是1
ps.setString(1, consignment_product_num.toString());
不能这么写 consignment_product_num在model里是bigdecimal类型的 不是String 数据库里它是decimal(18,2)
* 销售订单产品数据库实体类
*
*/
public class SalesOrderProductModel
{
private Integer salesorder_product_id;
private BigDecimal salesorder_product_mnum;
public Integer getSalesorder_product_id()
{
return salesorder_product_id;
}
public void setSalesorder_product_id(Integer salesorder_product_id)
{
this.salesorder_product_id = salesorder_product_id;
}
public BigDecimal getSalesorder_product_mnum()
{
return salesorder_product_mnum;
}
public void setSalesorder_product_mnum(BigDecimal salesorder_product_mnum)
{
this.salesorder_product_mnum = salesorder_product_mnum;
}
}数据库操作类DAO如下
public void updatemnum(BigDecimal consignment_product_num , Integer salesorder_product_id) throws SQLException
{
String sql = " update DPC_SalesOrder_Product set SALESORDER_PRODUCT_MNUM = SALESORDER_PRODUCT_MNUM - ? where SALESORDER_PRODUCT_ID = ?";
ps = conn.prepareStatement(sql);
ps.setBigDecimal(1, consignment_product_num);
ps.setInt(2, salesorder_product_id);
ps.executeUpdate();
}
action动作类如下
spdao.updatemnum(new BigDecimal(request.getParameter("consignment_product_num" + tokens[z]).toString()), Integer.parseInt(request.getParameter("salesorder_product_id" + tokens[z])));数据库结构如下
DPC_SalesOrder_Product表SALESORDER_PRODUCT_MNUM decimal(18,2)
SALESORDER_PRODUCT_ID int