如何在 java 中插入日期和时间

How to insert date and time in java

我正在使用 JDBC oracle database.And 在 Netbeans IDE 中做一个 java 项目,我需要将日期和时间插入数据库,这是格式为 11/16/2013 10:30。 我在下面附上了我的代码。

DBConnector

中插入代码
public void insert(String id, String uid, String vmid, String ttid, String faid, String taid, String fdate, String tdate, String onbooking, String msbooking, String bcreated)
            throws SQLException {
        Statement stmt = null;
        String query = "Insert into DMUSER.CAB2("
                + "ID,"
                + "USER_ID,"
                + "VEHICLE_MODEL_ID,"
                + "TRAVEL_TYPE_ID,"
                + "FROM_AREA_ID,"
                + "TO_AREA_ID,"
                + "FROM_DATE,"
                + "TO_DATE,"
                + "ONLINE_BOOKING,"
                + "MOBILE_SITE_BOOKING,"
                + "BOOKING_CREATED"
                + ") values ("
                + id + ","
                + uid + ","
                + vmid + ","
                + ttid + ","
                + faid + ","
                + taid + ","
                + fdate + ","
                + tdate + ","
                + onbooking + ","
                + msbooking + ","
                + bcreated + ""
                + ")";

按钮点击事件

private void btn_insertActionPerformed(java.awt.event.ActionEvent evt) {                                           

    txt_id.setText("132536");
    txt_user_id.setText("16");
    txt_vechile_mdl_id.setText("28");
    txt_from_area_id.setText("58");
    txt_to_area_id.setText("1063");
    txt_frm_date.setText("11/16/2013 9:30");
    txt_to_date.setText("NULL");
    txt_booking_created.setText("11/16/2013 9:30");
    txt_travel_type_id.setText("2");
    txt_mobile_site_booking.setText("0");
    txt_online_booking.setText("1");
} 

private void btn_predictionActionPerformed(java.awt.event.ActionEvent evt) {                                               
        try {

            String id = txt_id.getText();
            String uid = txt_user_id.getText();
            String vmid = txt_vechile_mdl_id.getText();
            String ttid = txt_travel_type_id.getText();
            String faid = txt_from_area_id.getText();
            String fdate = txt_frm_date.getText();
            String tdate = txt_to_date.getText();
            String onbooking = txt_online_booking.getText();
            String msbooking = txt_mobile_site_booking.getText();
            String bcreated = txt_booking_created.getText();
            String taid = txt_to_area_id.getText();

            DB_Connector con = new DB_Connector();

            try {
                con.insert(id, uid, vmid, ttid, faid, taid, fdate, tdate, onbooking, msbooking, bcreated);
            } catch (SQLException ex) {

Logger.getLogger(CabCancellationUI.class.getName()).log(Level.SEVERE, null, ex); } } 赶上(异常前){ } }

这里的问题是,在数据库中日期列是 VARCHAR 数据类型,所以我如何插入这个 11/16/2013 10:30进入 database.Please 帮我解决这个问题。

已编辑:发生异常

QUERY:: Insert into DMUSER.CAB2(ID,USER_ID,VEHICLE_MODEL_ID,TRAVEL_TYPE_ID,FROM_AREA_ID,TO_AREA_ID,FROM_DATE,TO_DATE,ONLINE_BOOKING,MOBILE_SITE_BOOKING,BOOKING_CREATED) values (132536,16,28,2,58,1063,11/16/2013 10:30,NULL,1,0,01) java.sql.SQLSyntaxErrorException: ORA-00917: missing comma

at oracle.jdbc.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:91) at oracle.jdbc.driver.DatabaseError.newSQLException(DatabaseError.java:133) at oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:206) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:455) at oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:413) at oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:1034) at oracle.jdbc.driver.T4CStatement.doOall8(T4CStatement.java:183) at oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:942) at oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1222) at oracle.jdbc.driver.OracleStatement.executeUpdateInternal(OracleStatement.java:1706) at oracle.jdbc.driver.OracleStatement.executeUpdate(OracleStatement.java:1674) at oracle.jdbc.driver.OracleStatementWrapper.executeUpdate(OracleStatementWrapper.java:275) at Database.DB_Connector.insert(DB_Connector.java:78) at UI.CabCancellationUI.btn_predictionActionPerformed(CabCancellationUI.java:365) at UI.CabCancellationUI.access0(CabCancellationUI.java:28) at UI.CabCancellationUI.actionPerformed(CabCancellationUI.java:151) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2348) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252) at java.awt.Component.processMouseEvent(Component.java:6535) at javax.swing.JComponent.processMouseEvent(JComponent.java:3324) at java.awt.Component.processEvent(Component.java:6300) at java.awt.Container.processEvent(Container.java:2236) at java.awt.Component.dispatchEventImpl(Component.java:4891) at java.awt.Container.dispatchEventImpl(Container.java:2294) at java.awt.Component.dispatchEvent(Component.java:4713) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4888) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4525) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) at java.awt.Container.dispatchEventImpl(Container.java:2280) at java.awt.Window.dispatchEventImpl(Window.java:2750) at java.awt.Component.dispatchEvent(Component.java:4713) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758) at java.awt.EventQueue.access0(EventQueue.java:97) at java.awt.EventQueue.run(EventQueue.java:709) at java.awt.EventQueue.run(EventQueue.java:703) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) at java.awt.EventQueue.run(EventQueue.java:731) at java.awt.EventQueue.run(EventQueue.java:729) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) at java.awt.EventQueue.dispatchEvent(EventQueue.java:728) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) at java.awt.EventDispatchThread.run(EventDispatchThread.java

问题不是你想的那样。异常是抱怨错误的 sql-插入数据的语法。

您需要更正插入方法中的查询字符串。此外,您接受的每个 table 列都是字符串,这似乎是不正确的。考虑 table 的每一列的正确数据类型,比如 ID 应该是数字,而不是 varchar 等。

如果每个参数都是字符串类型,那么正确的代码必须在查询字符串中的参数前后各处添加',如下所示:

String query = "Insert into DMUSER.CAB2("
            + "ID,"
            + "USER_ID,"
            + "VEHICLE_MODEL_ID,"
            + "TRAVEL_TYPE_ID,"
            + "FROM_AREA_ID,"
            + "TO_AREA_ID,"
            + "FROM_DATE,"
            + "TO_DATE,"
            + "ONLINE_BOOKING,"
            + "MOBILE_SITE_BOOKING,"
            + "BOOKING_CREATED"
            + ") values ("
            + "'"+ id + "',"
            + "'" + uid + "',"
            + "'" + vmid + "',"
            + "'" + ttid + "',"
            + "'" + faid + "',"
            + "'" + taid + "',"
            + "'" + fdate + "',"
            + "'" + tdate + "',"
            + "'" + onbooking + "',"
            + "'"+ msbooking + "',"
            + "'"+bcreated + "'"
            + ")";

最后,这是一个糟糕的代码。你应该考虑使用 PreparedStatement.