1

我有一个扩展 SQLiteOpenHelper 的类和一个声明为的数据库:

@Override
public void onCreate(SQLiteDatabase db) {
    db.execSQL("CREATE TABLE " + TABLE_NAME + " (" + COL_TEMPERATURA
            + " TEXT, " + COL_UMIDITA + " TEXT," + COL_DATA + "DATETIME)");
}

现在我将在其中插入记录,但是当我尝试插入最后一个字段(DATETIME 类型)时,eclipse 告诉我我不能这样做:

public void insertRecord(List<Object[]> list) throws ParseException {
    String temperatura, umidita, data;
    SQLiteDatabase db = this.getWritableDatabase();
    ContentValues cv = new ContentValues();

    for (int i = 0; i < list.size(); i++) {
        temperatura = String.valueOf(list.get(i)[0]);
        umidita = String.valueOf(list.get(i)[1]);
        data = String.valueOf(list.get(i)[2]);
        // parsing data
        DateFormat dateformat = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss");
        Date data_date = dateformat.parse(data);
        // insert into database
        cv.put(COL_TEMPERATURA, temperatura);
        cv.put(COL_UMIDITA, umidita);
        cv.put(COL_DATA, data_date);
        db.insert(TABLE_NAME, null, cv);
        db.close();
    }

因为 cv.put() 只接受两个字符串作为参数。现在,如果我将 data_date 变量解析为字符串,MySql 会自动将其转换为正确的格式吗?

4

2 回答 2

3

您不能将对象插入 SQLite 您只能输入Integers, Text, Blobs,RealNumeric

因此您需要将日期作为字符串发送或更好,但将日期设置为时间戳并存储时间戳,以便更轻松地处理内容

于 2013-09-09T15:20:46.140 回答
3

SQLite 不支持 DateTime 格式。相反,我建议您使用 ISO8601 格式的字符串:

"YYYY-MM-DD HH:MM:SS.SSS"

在此处阅读有关它的更多信息

使用这种格式当然支持排序。我更喜欢这种字符串格式,因为它更具可读性。如果您选择整数格式(自 1970 年 1 月 1 日以来的毫秒数),您将不会在不涉及解析的情况下获得相同的可读性...

于 2013-09-09T15:21:17.443 回答