将数据插入数据库时​​出错

时间:2015-02-04 05:19:22

标签: java mysql

这是我的createFood DA代码,可以插入到数据库中。但是,有一个nullPointerException           pstmt.setString(2,food.getFoodName());

       public static int createFood(Food food) {
       // declare local variables
       int orderID ;
        DBController db = new DBController();
       String dbQuery;
       PreparedStatement pstmt;

    // step 1 - establish connection to database
    db.getConnection();

    // step 2 - declare the SQL statement
    dbQuery = "INSERT INTO orderitems (orderId, foodName, foodPrice, quantity,) VALUES(?,?,?,? )";
    pstmt = (PreparedStatement) db.getPreparedStatement(dbQuery);
    orderID = getNextOrderId();
    // step 3 - to insert record using executeUpdate method
    try {
        pstmt.setInt(1,orderID );
        pstmt.setString(2, food.getFoodName()); 
       pstmt.setDouble(3 ,food.getFoodPrice());
        pstmt.setInt(4, food.getQuantity());


        if (pstmt.executeUpdate() == 1) 
            return orderID;
        pstmt.close();
    } catch (Exception e) {
        e.printStackTrace();
    }

    // step 4 - close connection
    db.terminate();


    return -1;
}

这是我点击“订单”时的代码。

      private void actionPerformedOrder() {
    //retrieve user input
    String numPax = (String) cbNoPax.getSelectedItem();
    String tableNo= (String)cb_tableno.getSelectedItem();
     java.util.Date utilDate = new java.util.Date();
     Date orderDate = new Date(utilDate.getTime());
     System.out.println("Date   " + orderDate);
       orders = new Orders(Integer.parseInt(tableNo),Integer.parseInt(numPax),     (java.sql.Date) orderDate, totalAmount);
     int orderID = OrdersDA.createOrders(orders);

    OrderItems od;
   for (Food fd: foodList) {
       od = new OrderItems(orderID, fd.getFoodName(),  fd.getQuantity(), fd.getFoodPrice());
       FoodDA.createFood(food);
   }

我仍然无法弄清楚错误。谁知道哪里出错了?很多帮助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您已通过createFood()方法food变量,我无法在任何地方声明 尝试 createFood(fd)根据您的代码。