【问题标题】:How to delete old rows from sqlite database on android?如何从android上的sqlite数据库中删除旧行?
【发布时间】:2011-05-25 10:47:50
【问题描述】:

我有一个参数,用户可以在其中选择应存储数据的时间段。 我在days 变量中读到它。日期和时间,记录添加到数据库时存储在KEY_DATE_ADDED中,它的创建方式如下:

SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");  // sql date format
Date date = new Date();
initialValues.put(KEY_DATE_ADDED, dateFormat.format(date));

然后我执行以下操作:

mDb.delete(DATABASE_TABLE, 
           "date(now) > date(" + KEY_DATE_ADDED + ",+" + days + " days)",
           null);

它不起作用。实际查询(其中部分)如下所示:

日期(现在)> 日期(添加日期,+10 天)

这里有什么不正确的地方?看起来应该在这里而不是date_added。 我想使用SQL data formatting 来避免多次重新格式化日期。

是否有任何用于 Android 数据库的 GUI 来测试对实际数据的 SQL 查询?

【问题讨论】:

  • 好的,我应该使用date('now') > date('date_added','+10 days') - 现在可以了。所以,悬而未决的问题只是关于 GUI。
  • 您可以使用adb pull /data/data/<namespace>/databases/<dbName> 从模拟器中提取数据库。我使用 Firefox 插件“SQLite Manager”来查看或编辑数据库。
  • 我为测试查询所做的工作以及使用 SQLiteBrowser 进行的操作:sourceforge.net/projects/sqlitebrowser 这很容易使用,您只需从设备(模拟器或实际手机)中提取数据库,然后去野外。我现在不在我的工作站,但是通过界面提取数据库相当简单。模拟器/设备实例将 SQLite3 数据库存储在文件夹 /data/data//databases/ 中。也看到这个问题:stackoverflow.com/questions/3292818/…

标签: android datetime sqlite


【解决方案1】:

好的,我应该使用date('now') > date('date_added','+10 days')

【讨论】:

  • 我猜应该是date('now') > date(date_added,'+10 days')
【解决方案2】:

请记住,可能还需要定期使用 VACUUM 命令来实际减小数据库的大小。

http://www.sqlite.org/lang_vacuum.html

【讨论】:

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