当前位置: 首页 > 知识库问答 >
问题:

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

湛鸿雪
2023-03-14

我在Netbeans IDE中用JDBC oracle数据库做一个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);}}捕获(Exception ex){}}

这里的问题是,在数据库中的日期列是varchar数据类型,所以我如何将这个11/16/2013 10:30插入到数据库中,请帮我整理一下。

编辑:发生异常

query::插入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)值(132536,16,28,2,58,106 3,11/16/2013 10:30,NULL,1,0,01)java.sql.sqlsyntaxerrorexception:ora-00917:缺少逗号

在oracle.jdbc.driver.sqlstatemapping.newsqlexception(sqlstatemapping.Java:91)在oracle.jdbc.driver.databaseerror.newsqlexception(databaseerror.Java:133)在oracle.jdbc.driver.databaseerror.throwsqlexception(databaseerror.Java:206)在oracle.jdbc.driver.t4cttioer.processerror(t4cttioer.:455)在ionPerformed(CabCancellationUI.Access$500(CabCancellationUI.java:28)在UI.CabCancellationUI$6。ActionPerformed(CabCancellationUI.java:151)在javax.Swing.AbstractButton.FireActionPerformed(AbstractButton.java:2022)在javax.Swing.AbstractButton.Handler。ActionPerformed(AbstractButton.java:2348)在a.awt.LightWeightDispatcher.RetargetMouseEvent(container.java:4888)在java.awt.LightWeightDispatcher.ProcessMouseEvent(container.java:4525)在java.awt.LightWeightDispatcher.DispatchEvent(container.java:4466)在java.awt.Window.DispatchEvent(container.java:2280)在java.awt.Window.DispatchEventImpl(container.java:2750)在ntroller.doprivileged(本机方法)在java.security.protectiondomain$javasecurityaccessimpl.doIntersectionPrivilege(protectiondomain.java:76)在java.awt.EventQueue.DispatchEvent(EventQueue.java:728)在java.awt.EventDispatchThread.PumponeEventForFilters(EventDispatchThread.java:201)在

共有1个答案

封德华
2023-03-14

问题不是你想的那样。一个例外是抱怨插入数据的SQL语法错误。

您需要在insert方法中更正查询字符串。而且,您接受的每个表列都是字符串,这似乎是不正确的。考虑一下表中每列的正确数据类型,比如ID应该是number而不是varchar,等等。

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

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。

 类似资料:
  • 问题内容: 我已经写了下面的代码,但它似乎只插入当前日期,而不是当前时间。有人知道该怎么做吗? 问题答案: 似乎只是因为这就是它要打印的内容。但是实际上,您不应该以这种方式编写逻辑。这等效于: 将系统日期转换为字符串,只是将其转换回日期,似乎很愚蠢。 如果要查看完整日期,则可以执行以下操作:

  • 在 Dreamweaver 中使用日期对象以采用您喜欢的任何格式插入和更新当前日期。 Dreamweaver 提供了一个方便的日期对象,该对象使您可以以喜欢的格式插入当前日期(包含或不包含时间都可以),并且您可以选择在每次保存文件时都自动更新该日期。 注意:“插入日期”对话框中显示的日期和时间不是当前日期,也不反映访问者在显示您的站点时所看到的时期/时间。它们只是说明此信息的显示方式的示例。 在“

  • 问题内容: 这是我正在尝试执行的一些代码片段: 我似乎无法比较日期和日期时间值。比较这些的最佳方法是什么?我应该将日期时间转换为日期还是相反?我如何在它们之间转换。 (一个小问题,但似乎有点令人困惑。) 问题答案: 使用该方法将日期时间转换为日期: 或者,您可以使用代替。你可以用 消除之后的时间部分。

  • 注意:在MySQL表中,此列的数据类型我选择了日期数据类型 我只是有问题的日期部分查询插入日期:

  • 我在将空值插入MySQL表的日期字段时遇到问题。 下面是插入查询: s1和s2列采用字符串值,d1和d2列采用日期。当我只使用字符串字段运行这个查询时,没有问题。 日期值可以设置为空,所以我没有在查询中包含引号,而是在前面将它们添加到变量中。这是我用来设置日期值的php代码: 当日期值全部设置时,记录将被正确插入。但是,当其中一个日期为空时,将不插入任何内容。 为什么我不能像这样在MySQL中插入

  • 问题内容: 我为Jenkins作业编写了一个批处理脚本,该脚本会编译“ .net”代码,其中的步骤之一是在提取新的已编译代码之前备份当前目录。 我正在使用这些行来提取要插入备份文件名的日期和时间: 问题在于其输出看起来像这样: 这导致文件名是: 这是一个问题。 我想从时间变量中忽略“ AM”,怎么办? 问题答案: 因为您显然对Powershell的使用没有问题,所以将前两行替换为: 然后,在变量中