【问题标题】:Store date object in sqlite database在 sqlite 数据库中存储日期对象
【发布时间】:2011-02-25 11:03:01
【问题描述】:

我在我的 Java 项目中使用了一个数据库,我想在其中存储日期,第 5 个和第 6 个参数是日期对象。我使用了下面的解决方案,但在指示的行中有错误:

PreparedStatement creerFilm = connecteur.getConnexion().prepareStatement(
        "INSERT INTO FILM (ID, REF, NOM, DISTRIBUTEUR, DATEDEBUT, DATEFIN) "+
        "VALUES (?, ?, ?, ?, ?, ?)");
creerFilm.setInt(1, getId());
creerFilm.setString(2, getReference());
creerFilm.setString(3, getNomFilm());
creerFilm.setString(4, getDistributeur());
// These next two lines
creerFilm.setDate(5, new Date (getDateDebut().getDate()));
creerFilm.setDate(6, new Date (getDateFin().getDate()));
// The above two lines
creerFilm.executeUpdate();
creerFilm.close();

你能帮我解决这个问题吗?

谢谢

【问题讨论】:

  • 我认为 SQLite 只能存储日期和时间的 TEXT、REAL 或 INTEGER 值?

标签: java sqlite date jdbc


【解决方案1】:

我无法从您的代码中真正看出,但您必须使用 java.sql.Date,而不是 java.util.Date。

以下是从实用程序日期实例转换为 SQL 日期实例的方法:

java.sql.Date date = new java.sql.Date(utilDate.getTime());

【讨论】:

  • 感谢您的回答。我使用了您告诉我的解决方案,现在我没有错误。但是我不知道应该使用哪种日期格式将其正确存储在数据库中。目前我在构造函数中使用一个字符串,它应该具有这种格式“dd-MM-yyyy”,之后我使用一个函数将它转换为 SimpleDateFormat。当我使用 toString() 时一切正常,但是当我将它存储在数据库中时,我在“1287525600000”字段中得到类似的东西你能告诉我问题到底出在哪里吗?
  • java.sql.Date 没有 String 构造函数。 java.util.Date String 构造函数已弃用。 java.text.DateFormat 有一个 parse 方法,可以处理格式为 Jan 12, 1952 或 January 12, 1952 .然后您可以使用我的答案中的转换来获取 java.sql.Date。
【解决方案2】:

我认为你可以在这里阅读详细的答案:How to insert date in sqlite through java

简而言之,您可以将 Date 插入为 setString(或 setInt,或 setLong(参见上面的链接),但不是 setDate):

PreparedStatement ps = connection.prepareStatement(<your sql>);
DateFormat df = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
ps.setString(1, df.format(<your date>));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-09-12
    • 2013-05-12
    • 2013-02-07
    • 2010-11-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-31
    相关资源
    最近更新 更多