【问题标题】:how to store date from datepicker to sqlite?如何将日期从 datepicker 存储到 sqlite?
【发布时间】:2017-10-26 21:36:58
【问题描述】:

我的代码是:

 taskDB.insertDate(selectedDate,selectedId);

SQlite 数据库:

String sql = "CREATE TABLE IF NOT EXISTS " +TABLE_NAME+ "(" +KEY_ID+ " INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL," +KEY_TASKNAME+ " TEXT, " +KEY_STATUS+ " INTEGER," +KEY_FAV+ " INTEGER," +KEY_DATE+ " TEXT"+")";
    db.execSQL(sql);

插入查询:

public void insertDate(String date, int id){
    String sql = "UPDATE task SET date = "+date+" WHERE id = " +id;
    SQLiteDatabase db = this.getWritableDatabase();
    Log.d(TAG,"id is:" +id+ ", date is: "+date);// log is below
    db.execSQL(sql);
}

日志:

05-26 10:23:14.538 15298-15298/? D/TaskDB: id is:2, date is: 17-05-2017

在插入查询的日志中,我得到了从datepicker 中选择的正确日期,但在表格中它的格式不同。This 是插入日期后sqlite 表格的屏幕截图

【问题讨论】:

  • 尝试设置sqlite数据类型日期
  • 在日期前后加上单引号来表示字符串,如"UPDATE task SET date = '"+date+"' WHERE id = " +id;

标签: android date sqlite android-sqlite


【解决方案1】:

作为commented,你需要在date周围加上单引号来表示字符串,比如

"UPDATE task SET date = '"+date+"' WHERE id = " +id;
//                      ^        ^

来自docs

字符串常量是通过将字符串用单引号括起来形成的 (')。字符串中的单引号可以通过将两个 连续单引号 - 如在 Pascal 中。 C 风格的转义使用 不支持反斜杠字符,因为它们不是标准的 SQL。

【讨论】:

    【解决方案2】:

    像这样更改查询并重试

    String sql = "UPDATE task SET date = '"+date+"' WHERE id = " +id;

    我已更改将日期放在单引号中,每当您将字符串值添加到查询中时,都需要将它们放在单引号中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-22
      相关资源
      最近更新 更多