1

SQLiteOpenHelper を拡張するクラスと、次のように宣言されたデータベースがあります。

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

今、私はその中にレコードを挿入しますが、(DATETIME 型の) 最後のフィールドを挿入しようとすると、日食はそれを行うことができないと私に言いました:

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() は引数として 2 つの文字列しかとらないためです。data_date 変数を文字列に解析すると、MySql は自動的に正しい形式に変換しますか?

4

2 に答える 2

3

オブジェクトを SQLite に挿入することはできません。入力できるのIntegersText、、、、またはBlobsRealNumeric

したがって、日付を文字列として送信するか、日付をタイムスタンプとして送信し、タイムスタンプを保存する必要があるため、処理が簡単になります

于 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 に答える