3

MySQLデータベーステーブルに日付を時間なしで挿入するにはどうすればよいですか? これらのコードを試しましたが、次の例外が発生します。

com.mysql.jdbc.exceptions.jdbc4.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'Mar 05 00:00:00 GMT-08:00 2014,1,1)' at line 1

注:MySQLテーブルでは、この列のデータ型は日付データ型を選択しました

String Date = "\\d\\d\\d\\d\\D[0-1][0-9]\\D[0-3][0-9]";
while (DateMatcher.find())  {   
    String date = DateMatcher.group().trim();

    DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
    Date myDate = formatter.parse(date);

    db.insert_date(myDate,2,1);           
}

Date を挿入するための日付部分クエリのみに問題があります。

// insert DATE
public void insert_date(Date  date_str, int sentence_id ,int document_id ){
       // Statements allow to issue SQL queries to the database

    try {
        statement = connect.createStatement();

        System.out.println(  "insert into Date(date_Str,Sen_id,doc_id) " +
                 " values(" + date_str + "," +  sentence_id + "," + document_id +  ")"
                 );


        statement.executeUpdate(

         "insert into test.Date(date,Sen_id,doc_id)" +
         " values(" + date_str + "," +  sentence_id + "," + document_id + ")"
          );
    }
    catch(Exception e ){System.out.println(e);};
    // Result set get the result of the SQL query

}
4

2 に答える 2

11

まず、java.util.Dateを Java のデータベースに永続化するには、 に変換する必要がありますjava.sql.Date。JDBC SQL の幸いなことDateは、それが Java のサブクラスであることですDate

したがって、java.sql.Datefromを作成するには、次のjava.util.Dateようにする必要があります。

DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd");
Date myDate = formatter.parse(date);
java.sql.Date sqlDate = new java.sql.Date(myDate.getTime());

db.insert_date(sqlDate);

db.insert_dateのみを受け入れることを確認してくださいjava.sql.Date

PreparedStatement.setDate()関数を呼び出す必要がある場所。

関連する質問java.util.Date vs java.sql.Dateを参照してください。

于 2013-05-20T08:51:20.320 に答える