将null值返回到数据库语句的方法

时间:2015-04-02 16:44:34

标签: java sql

我在名为ProductInsert的类中有如下方法:

public float insertPrice() {
        try {
            System.out.println("Enter Product Price:");
            setProductPrice(scanFloat.nextFloat());
        }catch (InputMismatchException e){
            System.out.println("Invalid Input!");
            new ProductInsert().insertPrice();
        }
        return getProductPrice();
    }

我有另一个名为ProductServices的类,其中包含以下Prepared语句数据库执行:

            PreparedStatement pstm = con.prepareStatement(insertQuery);
            pstm.setFloat(2, insertPrice());

因此,当用户输入一个字符串值" asdfad"当询问价格时,它返回一个InputMismatch Exception并再次调用insertPrice方法。并且在第二次调用时,用户输入浮动值" 230.00" pstm.setfloat获取一个空值并插入" 0.00"在数据库中而不是" 230.00"。为什么???

产品价格的setter和getter:

public float getProductPrice() {
        return productPrice;
    }

    public void setProductPrice(float productPrice) {
        this.productPrice = productPrice;
    }

1 个答案:

答案 0 :(得分:1)

如果出现异常,您可以创建实例new ProductInsert().insertPrice();

从初始调用insertPrice()返回的值是此ProductPrice实例(您准备语句的实例)的值,该值未设置(或设置为0.0)。

catch中,在没有insertPrice()的情况下直接拨打new ProductPrice(),但您确实需要重置或使用错误的输入,例如

 //...
 catch (InputMismatchException e){
      System.out.println("Invalid Input!");
      scanFloat.nextLine(); // will "eat" the wrong entry
      insertPrice(); // try again
 }