1

java タイムスタンプを msaccess データベースに挿入したいのですが、以下に示すエラーが発生します。ms-access フィールドは DATE データ型に設定されています。アドバイスをいただければ幸いです。ありがとう

これが私のDAOクラスメソッドです:

public void addSale(String saleDetails, String saleTotal, Timestamp saleTimestamp) 
                    throws ClassNotFoundException, SQLException {

Statement myStatement = getConnection();
String sql = "INSERT INTO Sale (SaleDetails, SaleTotal, SaleTimestamp)"
            + " VALUES ('"+saleDetails+"','"+saleTotal+"','"+saleTimestamp+"')";

myStatement.executeUpdate(sql);
closeConnection();

私のDTOメソッド:

public void storeSale(String saleDetails, String saleTotal, Timestamp saleTimestamp){
   DAO dao = DAO.getDAO();
   try {
      dao.addSale(saleDetails, saleTotal, saleTimestamp);
    } catch (ClassNotFoundException | SQLException ex) {
        Logger.getLogger(Sale.class.getName()).log(Level.SEVERE, null, ex);
    }

私のタイムスタンプ方法:

public Timestamp addTimestamp(){ 
    java.util.Date date= new java.util.Date();
return new Timestamp(date.getTime());
}

エラー: [Microsoft][ODBC Microsoft Access Driver] 条件式のデータ型が一致しません。

4

1 に答える 1

3

または、データベースの種類を変更する精度が必要な場合はjava.util.Data、をに変換する必要がありますjava.sql.Datejava.sql.TimestampTIMESTAMP

を作成するためのコードjava.sql.Date:

 java.util.Date today = new java.util.Date();
 long t = today.getTime();
 java.sql.Date dt = new java.sql.Date(t);

次に、java.sql.Date をデータベースに入れることができます。私にとっては常に機能しました。

情報:

  • java.sql.Date年、月、日DATE格納する SQL に対応し、時、分、秒、ミリ秒は無視されます。さらに、タイムゾーンに関連付けられていません。sql.Date
  • java.sql.TimeSQL に対応し、時、分、秒、およびミリ秒TIMEに関する情報のみが含まれます。
  • java.sql.TimestampTIMESTAMPナノ秒までの日付であるSQL に対応します(ミリ秒のみをサポートすることに注意してくださいutil.Date! )。
于 2012-11-10T14:35:04.500 に答える