Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java SQLiteDatabase将日期添加到数据库中_Java_Android_Sqlite_Datetime - Fatal编程技术网

Java SQLiteDatabase将日期添加到数据库中

Java SQLiteDatabase将日期添加到数据库中,java,android,sqlite,datetime,Java,Android,Sqlite,Datetime,我有一个扩展了SQLiteOpenHelper的类和一个声明为: @Override public void onCreate(SQLiteDatabase db) { db.execSQL("CREATE TABLE " + TABLE_NAME + " (" + COL_TEMPERATURA + " TEXT, " + COL_UMIDITA + " TEXT," + COL_DATA + "DATETIME)"); } 现在我想在其中插入记录,但当我尝试

我有一个扩展了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();
    }
public void insertRecord(列表)引发异常{
字符串温度,umidita,数据;
SQLiteDatabase db=this.getWritableDatabase();
ContentValues cv=新的ContentValues();
对于(int i=0;i

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

您不能将对象插入SQLite,您只能输入
整数
文本
水滴
实数
数值


因此,您需要将日期作为字符串发送,或者更好的做法是将日期作为时间戳并存储时间戳,以便更容易处理内容

您不能将对象插入SQLite,您只能输入
整数
文本
水滴
实数
数值


因此,您需要将日期作为字符串发送,或者更好地将日期作为时间戳并存储时间戳,以便更容易处理内容。SQLite不支持日期时间格式。相反,我建议您使用ISO8601格式的字符串:

"YYYY-MM-DD HH:MM:SS.SSS"
阅读更多关于它的信息


使用此格式当然支持排序。我更喜欢此字符串格式,因为它更可读。如果选择整数格式(自1970-01-01以来的毫秒数)如果不进行解析,您将无法获得相同的可读性…

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

"YYYY-MM-DD HH:MM:SS.SSS"
阅读更多关于它的信息


使用此格式当然支持排序。我更喜欢此字符串格式,因为它更可读。如果选择整数格式(自1970-01-01以来的毫秒数)如果不进行解析,您将无法获得相同的可读性…

SQLite没有日期时间格式:-请尝试以下日期方案:SQLite没有日期时间格式:-请尝试以下日期方案:随后,我对数据库执行select查询,需要按日期升序排列的记录。如果我将日期存储在s ISO格式,我对该查询有问题吗?@giozh只需将日期保存为时间戳,处理起来就容易多了with@tyczj我看不出使用时间戳比ISO8601字符串更容易处理。@giozh当然,当您使用此格式时,您可以按日期排序。只需像在任何其他列上一样使用order by即可。请参阅已编辑的答案。@giozh更简单,因为您只有一个数字,而没有格式化的日期,而且在存储时不必担心时区问题。随后,我对数据库执行select查询,并且需要按日期升序排列的记录。如果我以此ISO格式存储日期,我会对该查询有问题吗?@giozh只需将日期另存为时间戳,这将更容易处理with@tyczj我看不出使用时间戳比ISO8601字符串更容易处理。@giozh当然可以在使用此格式时按日期排序。只需像在任何其他列上一样使用order by即可。请参见编辑的答案。@giozh更容易,因为您只有一个数字,而没有格式ted日期,存储时不必担心时区问题