2016-08-21 12 views
0

NetBeans IDEでJDBC oracleデータベースを使用してJavaプロジェクトを実行しています。日付と時刻をデータベースに挿入する必要があります。フォーマットは2011/11/16 10:30。 以下に自分のコードを添付しました。 日付と時刻をJavaに挿入する方法

挿入コード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 + "" 
       + ")"; 

ボタンのClickイベント

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())。ログ(Level.SEVERE、nullで、EX) ; }}キャッチ(例外例){} }

ここでの問題は、データベース内の日付列がVARCHARデータ型であるので、どのようにこの2013年11月16日10時30分に挿入することができ、ありますこれを整理するのを手伝ってください。

編集:例外が

クエリを発生:: 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,1063,11/2013分の16 10:30、NULL、1,0,01) java.sql.SQLSyntaxErrorException:ORA-00917: のoracle.jdbcで欠落コンマ

.driver.SQLStateMapping.newSQLException(SQLStateMapping.java:91) ()oracle.jdbc.driver.DatabaseError.newSQLException oracle.jdbc.driver.T4CTTIoer.processErrorで oracle.jdbc.driver.DatabaseError.throwSqlException(DatabaseError.java:206) で(DatabaseError.java:133) (T4CTTIoer。 oracle.jdbc.driver.T4CStatementで oracle.jdbc.driver.T4C8Oall.receive(T4C8Oall.java:1034で oracle.jdbc.driver.T4CTTIoer.processError(T4CTTIoer.java:413))にて455):Javaの。 oracle.jdbc.driver.T4CStatement.executeForRows(T4CStatement.java:942) oracle.jdbc.driver.OracleStatement.doExecuteWithTimeout(OracleStatement.java:1222)で オラクルの でdoOall8(T4CStatement.java:183)。 jdbc.driver.OracleStatement.executeUpdateInternal(Orac leStatement.java:1706) でoracle.jdbc.driver.OracleStatement.executeUpdate(OracleStatement.java:1674) でoracle.jdbc.driver.OracleStatementWrapper.executeUpdate(OracleStatementWrapper.java:275) Database.DB_Connectorました。 : UI.CabCancellationUI $ 6.actionPerformed(CabCancellationUI.javaでUI.CabCancellationUI.access $ 500(CabCancellationUI.java:28)で UI.CabCancellationUI.btn_predictionActionPerformed(CabCancellationUI.java:365) で(DB_Connector.java:78)を挿入151)at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2022) at javax.swing.AbstractButton $ Handler.actionPerformed(AbstractButton.java:2348)(デフォルトボタンモデル。Javaの:259) javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:252)java.awt.Component.processMouseEvent(Component.java:6535)で で javax.swing.JComponent.processMouseEventで(JComponent.java:3324)at のjava.awt.Component.processEvent(Component.java:6300)java.awt.Container.processEvent(Container.java:2236)at java.awt.Component.dispatchEventImpl(コンポーネント.java:4891)at にあるjava.awt.Container.dispatchEventImpl(Container.java:2294)で、 のjava.awt.Component.dispatchEvent(Component.java:4713)にjava.awt.LightweightDispatcher.retargetMouseEvent(Container.java: :4888) at java.awt.Lightw eightDispatcher.processMouseEvent(Container.java:4525) のjava.awt.Windowでjava.awt.Container.dispatchEventImpl(Container.java:2280)でjava.awt.LightweightDispatcher.dispatchEvent(Container.java:4466) で。 dispatchEventImpl(Window.java:2750)at java.awt.Component.dispatchEvent(Component.java:4713)at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:758)at java.awt.EventQueue.access $ 500 (EventQueue.java:97)at java.awt.EventQueue $ 3.run(EventQueue.java:709)at java.awt.EventQueue $ 3.run(EventQueue.java:703)at java.security.AccessController.doPrivileged (ネイティブメソッド)at java.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java :76) java.awt.EventQueueの$ 4.runでjava.awt.EventQueueの$ 4.runで すべてjava.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:86) (EventQueue.java:731)(でjava.awt.EventQueue.dispatchEventで すべてjava.security.ProtectionDomain $ JavaSecurityAccessImpl.doIntersectionPrivilege(ProtectionDomain.java:76) で java.security.AccessController.doPrivileged(ネイティブメソッド)でEventQueue.java:729)(EventQueue.java : JAでjava.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:201) でjava.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:116) における728) va.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:105) java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:93) ATでjava.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:101) でjava.awt.EventDispatchThread.run(EventDispatchThread.java

+0

コード実行時に発生した問題/例外 – guleryuz

+0

例外を使用して質問を更新しました。 – temp

+3

をチェックしてください。問題#1 - INSERT文へのすべての入力をパラメータ化してください。もしそれをしたくない場合は、日付/時刻リテラルを引用符で囲む必要があります(つまり、'11/16/2013 10:30 ')。リテラルを使いたい場合は、システム間で異なるデフォルトのOracleの日付形式に依存するため、to_date()を呼び出して変換する必要があります。代わりに本当にパラメータを使用するので、あなたはその恐れを気にする必要はありません。 – OldProgrammer

答えて

3

問題はあなたの考えではありません。例外は、データを挿入するための間違ったSQL構文について不平を言っています。

挿入メソッドでクエリ文字列を修正する必要があります。また、テーブル列のそれぞれが文字列として受け入れられましたが、これは間違っているようです。 IDは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を使うべきだと思います。

+0

はい、私は例外を誤解しました。今すぐうまくいきます。ありがとう – temp

+0

@temp - しかし、私が与えた提案を見てください。 PreparedStatementsを試して、IDのデータ型、日付型の日付などを使用してください。また、同じことをもっと詳しく調べてください。 Good Luck、:) –

+0

いや、Okey。もう一度おねがいします:) – temp

関連する問題