ContentValues put方法

时间:2012-04-15 09:42:23

标签: android android-intent

在数据库方面,checkInTimecheckOutTime的类型为TIMESTAMP

在我的java代码中,checkInTimecheckOutTime的类型为java.sql.Timestamp

为了将记录插入db,我正在使用这段代码:

1. ContentValues contentValues=new ContentValues();

    2. contentValues.put(USER_ID, userId);
    3. contentValues.put(ROOM_ID, roomId);
    4. contentValues.put(CHECK_IN, checkInTime);
    5. contentValues.put(CHECK_OUT, checkOutTime);

    6. return database.insert(MRM_BOOKING_DETAILS_TABLE, null, contentValues);

但是我在第4行和第5行遇到编译错误,因为他们不期望某种类型的java.sql.Timestamp

我看不到任何C ontentValues的put方法会在其第二个参数中接受类型java.sql.Timestamp。请建议如何在这种情况下传递java.sql.Timestamp,以便我也可以删除编译错误。

谢谢,

2 个答案:

答案 0 :(得分:7)

我建议您使用DATETIME代替TIMESTAMP。处理日期和时间时更为通用。

此外,您可以使用SimpleDateFormat在插入或读取数据库时解析DATETIME值。

final SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");

<强>更新

尝试按以下方式执行:

final SimpleDateFormat parser = new SimpleDateFormat("yyyy-MM-ddTHH:mm:ss.SSS");

contentValues.put(CHECK_IN, parser.format(checkInTime));
contentValues.put(CHECK_OUT, parser.format(checkOutTime));

答案 1 :(得分:0)

如果checkInTime和checkOutTime是bith时间戳,那么在将thm存储到contentvalue之前只需转换为毫秒并存储它们,然后在重新转换时将它们重新转换为所需的格式。因为ContentValue不接受timeStamps所以只需转换并存储,这样你就不会得到任何补偿错误。