【问题标题】:Select data between two dates in a SQLite DB using a ContentResolver?使用 ContentResolver 在 SQLite DB 中选择两个日期之间的数据?
【发布时间】:2017-06-22 22:57:38
【问题描述】:

我在 SQLite 中有一个数据库,每次用户插入新寄存器时都会保存当前日期和时间。日期使用时间字符串格式存储在数据库中:YYYY-MM-DD HH:MM:SS。

所以问题是我需要选择两个日期之间范围内的寄存器并将结果从低到高排序。我正在使用我自己的内容提供商,我该如何实现?

这是我的查询代码:

                    final String[] projection = {Contrato.Columnas._ID,Contrato.Columnas.SISTOLICA,Contrato.Columnas.DIASTOLICA,Contrato.Columnas.PULSO};                       
                    final String orderBy = Contrato.Columnas.SISTOLICA + " DESC";
                    Cursor c = resolver.query(Contrato.URI_CONTENIDO_BASE,projection,null,null,orderBy);

【问题讨论】:

  • ContentProvider 主要用于向第三方应用发布数据。你为什么在这里使用一个?
  • 是一个医疗应用程序,它会将血压测量报告从患者应用程序共享到医生应用程序(以及医院系统的其他应用程序),这就是我使用 ContentProvider 的原因,但是如果没有办法做到这一点,我认为应该使用 rawQuery。

标签: android mysql sqlite date


【解决方案1】:

ContentProvider 是一个外观。任何ContentProvider/ContentResolver API 的含义由您决定。只要客户和提供商就query() 等参数的含义达成一致,您就可以为所欲为。

所以,替换:

resolver.query(Contrato.URI_CONTENIDO_BASE,projection,null,null,orderBy)

类似:

resolver.query(Contrato.URI_CONTENIDO_BASE,projection,Contrato.Columnas.SISTOLICA+">=? AND "+Contrato.Columnas.SISTOLICA+"<=?",args,orderBy)

其中args 是两个日期,格式为YYYY-MM-DD HH:MM:SS。可能,您可以将这些东西传递给 SQLite 而无需修改。即使您确实需要修改它......再次,这是您的代码,因此您可以让它做任何您想做的事情。

【讨论】:

    猜你喜欢
    • 2015-07-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-03-13
    • 2012-10-31
    • 2012-03-03
    • 2012-03-27
    相关资源
    最近更新 更多