-1

デスクトップアプリの開発に JDatechooser netbeans swing プラグインを使用しています。デフォルトでは、日付形式は mm/dd/yy ですが、データベースが必要とする形式ではありません。yyyy-mm-dd 形式に変換する必要があります。SimpleDateformat クラスを試してみましたが、次のエラーが表示されます。com.mysql.jdbc.MysqlDataTruncation: Data truncation: Incorrect date value: '8/29/11' for column 'registered_date' at row 1

誰でもこれを適切に行うための良い解決策を教えてもらえますか

ありがとう

4

2 に答える 2

6

データベースには特定の日付形式はまったく必要ありません。そもそもデータを文字列として挿入するべきではありません。準備済みステートメントを使用し、 を使用する必要がありますsetDate。理想的には、できるだけ少ない文字列変換を実行する必要があります。 から値を取得するときJDateChooserや、データベースに挿入するときに必要ありません。

// Unfortunately you need to convert from java.util.Date to java.sql.Date
statement.setDate(1, new java.sql.Date(chooser.getDate().getTime()));

(タイムゾーンを念頭に置く必要がある可能性があることに注意してくださいsetDateただし、それは別の問題です...カレンダーも取るオーバーロードを呼び出すことができます。)

値を含む完全な SQL ステートメントを作成してデータを挿入 (またはクエリ) していた場合は、すぐにそれをやめるべきです。この種の変換の問題があるだけでなく、SQL インジェクション攻撃にさらされることにもなります。SQL にパラメータを含めるのではなく、常に準備済みステートメントを使用し、任意のパラメータをパラメータとして指定します。

于 2011-08-29T08:12:33.407 に答える
1

これを試して:

Date date = ...
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String date_for_mysql = df.format(date);

ここで関連する SO の回答を参照してください。

日付を解析する方法は?
Javaの日付フォーマット?
MySqlのDateTime型をより使いやすいものに変換
するJavaの日付型をmysqlの日付型に保存する方法は?
日付を MYSQL 日付形式
に変換する 文字列の日付を SQL 日付に変換する方法は?
現在の日付を Java から MySQL の日付列に設定するには?

于 2011-08-29T08:08:57.967 に答える