0

フォームに JDateChooser があります。そして、その Date 値を DB に挿入する必要があります。「public class Nonacademic extends javax.swing.JInternalFrame {」の直後にこのメソッドを使用しましたが、

そして、私が使用した方法は以下に記載されています。

public static java.sql.Date convertUtilDateToSqlDate(java.util.Date date){

                if(date != null) {
                java.sql.Date sqlDate = new java.sql.Date(date.getTime());
                    return sqlDate;
                    }
                JOptionPane.showMessageDialog(null, "No Dates are      Specified!");
                return null;
                }

および追加ボタンのactionPerformedイベントで使用しました

             Connection c=DBconnect.connect();
             Statement s = (Statement) c.createStatement();
             PreparedStatement statement =  c.prepareStatement("INSERT into nonacademic ( empId, name, Dob, JoinedDate) VALUES (?,?,?,?)");

           statement.setString(1,txtEmpId.getText());
           statement.setString(2, txtNmae.getText());
           statement.setDate(3,convertUtilDateToSqlDate( (Date)     jDateChooserDOB.getDate()));
           statement.setDate(4, convertUtilDateToSqlDate( (Date) jDateChooserDateOfJoined.getDate()));

statement.executeUpdate();

問題は、このエラーが発生することです。 java.lang.ClassCastException: java.util.Date cannot be cast to java.sql.Date

これに対する解決策を検索すると、親クラスのインスタンスが子クラスにキャストされているためにこのランタイム エラーが発生することがわかりました。このコードを修正するための提案を教えてください。

注:JDateChooserで日付を選択すると、上記のコードのコーディングが完了した後、この2015-08-06のように表示されます.上記のコードの前は、2015年8月6日と表示されます.

4

1 に答える 1

0

以下のステートメントを試してください。

statement.setDate(3,convertUtilDateToSqlDate(jDateChooserDOB.getDate()));
statement.setDate(4, convertUtilDateToSqlDate(jDateChooserDateOfJoined.getDate()));

理由: これは import ステートメントが原因です。コードに java.sql.Date または java.sql.* ステートメントのみをインポートした可能性があります。プログラムで言及したすべての「Date」クラスは、java.sql.Date として扱われます。そのため、JVM はこれらのステートメントで java.util.Date を java.sql.Date に変換しようとし、例外をスローします。

于 2015-08-19T04:20:13.780 に答える