我想在我的ContentProvider
中使用SQLiteStatement
而不是rawQuery
或其他标准方法之一。我认为使用SQLiteStatement
会给查询带来更自然,更原生,更高效,更不容易出错的方法。从SQLiteStatement创建光标
问题是我没有看到生成并返回Cursor
的方法。我意识到我可以使用“调用”并返回Bundle
,但该方法要求我缓存并同时返回所有选定的行 - 这可能很大。
我将开始查看Android源代码 - 我推测“查询”最终使用SQLiteStatement
并以某种方式生成Cursor
。但是,如果任何人有任何指示或知识,我将不胜感激您的分享。
啊,我明白了,他们让SQLiteStatement非常有限。所以,这使得ContentProvider与这个问题无关(我可能不会使用它,但这是一个不同的话题)。所以,我现在正在查看SQLLiteDirectCursorDriver的源代码,看看是否值得重写bindAllArgsAsStrings。这实际上是我的问题的关键 - 正确地绑定参数,并且不会遇到某些问题,如果将某些内容视为其他内容,则将其视为文本。 –
使用rawQuery似乎工作正常。我看到一些人们在where子句中比较inint时遇到困难的帖子,但我没有任何这样的麻烦(还没有)。事实上,我认为这种安排非常好 - 我在“合同”文件中有一堆db包装器,它将应用程序中的所有列名称和数据库特定的东西隔离开来。如果有人想使用这个例子,可以张贴。 –