Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在java中有日期错误_Java_Date - Fatal编程技术网

在java中有日期错误

在java中有日期错误,java,date,Java,Date,我目前正在做一个基于订购系统的项目 下面是“订单”的实体类: 连接到数据库的My OrdersDA: public static int createOrders(Orders orders) { // declare local variables int orderID ; DBController db = new DBController(); String dbQuery; PreparedStatement pstmt; // ste

我目前正在做一个基于订购系统的项目

下面是“订单”的实体类:

连接到数据库的My OrdersDA:

public static int createOrders(Orders orders) {
    // 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 orders (orderId, tableNo, numPax, orderDate , totalAmount) VALUES(?, ?, ?, ? , ?)";
    pstmt = (PreparedStatement) db.getPreparedStatement(dbQuery);
    orderID = getNextOrderId();
    // step 3 - to insert record using executeUpdate method
    try {
        pstmt.setInt(1,orderID );
        pstmt.setInt(2, orders.getTableNo());
        pstmt.setInt(3, orders.getNumPax());
        pstmt.setDate(4, (Date)orders.getOrderDate());
        pstmt.setDouble(5, orders.getTotalAmount());


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

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

    return -1;
}
将出现以下错误:

      pstmt.setDate(4, (Date)orders.getOrderDate()); and states that java.util.Date cannot be cast to java.sql.Date
创建订单时我的主要方法:

  private void actionPerformedOrder() {
  //retrieve user input
    String numPax = (String) cbNoPax.getSelectedItem();
    String tableNo= (String)cb_tableno.getSelectedItem();
   Date orderDate = new Date();
      orders=newOrders(Integer.parseInt(tableNo),Integer.parseInt(numPax)
  ,orderDate, totalAmount);
   int orderID = OrdersDA.createOrders(orders);

    }

你知道我哪里出错了吗?谢谢你的帮助

信息非常清楚

pstmt.setDate(4, (Date)orders.getOrderDate()); and states that java.util.Date cannot be cast to java.sql.Date
您有一个对象
java.util.Date
,但preparedStatement需要一个
java.sql.Date
。所以你必须转换它


查看如何操作。

两个类中导入的日期类似乎不同。在第一个类中是java.util.Date,但在OrdersDA类中是java.sql.Date

java.util.Date yourDate;
java.sql.Date sqlDate = new java.sql.Date(yourDate.getTime());

然后您就可以将其保存到SQL数据库中。

OT:是否应该调用
Orders
Order
java.util.Date yourDate;
java.sql.Date sqlDate = new java.sql.Date(yourDate.getTime());