我在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)在
问题不是你想的那样。一个例外是抱怨插入数据的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表中,此列的数据类型我选择了日期数据类型 我只是有问题的日期部分查询插入日期:
问题内容: 我为Jenkins作业编写了一个批处理脚本,该脚本会编译“ .net”代码,其中的步骤之一是在提取新的已编译代码之前备份当前目录。 我正在使用这些行来提取要插入备份文件名的日期和时间: 问题在于其输出看起来像这样: 这导致文件名是: 这是一个问题。 我想从时间变量中忽略“ AM”,怎么办? 问题答案: 因为您显然对Powershell的使用没有问题,所以将前两行替换为: 然后,在变量中
问题内容: 我有 以下格式的两个对象。 现在,我想将上述两个日期与时间进行比较。我应该如何在Java中进行比较。 谢谢 问题答案: 自实现以来,它很容易: 按照合同规定,如果分别被认为小于/等于/大于/大于(例如,在此之前/之前/之后),它将返回一个负整数/零/正整数。 请注意,还有和方法将改为返回布尔值。