2017-06-22 55 views
0

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

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

这是我的查询代码:

    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); 
+0

“ContentProvider”主要用于将数据发布到第三方应用程序。你为什么在这里使用一个? – CommonsWare

+0

是一个医疗应用程序,它将分享患者的应用程序的血压测量报告,医生应用程序(和医院系统的其他应用程序),这就是为什么我使用ContentProvider,但如果没有办法做到这一点我认为应该使用rawQuery。 –

回答

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,而无需修改。即使你确实需要修改它......再次,它是你的代码,所以你可以让它做任何你想要的。

+0

它工作了谢谢你! –

相关问题