使用SQLite过滤具体数据

时间:2019-07-14 18:24:05

标签: android android-sqlite android-cursor

我有这个简单的sqlite数据库:

WITH tempTable AS
(
    SELECT date, ROUND( SUM(size / 1024 / 1024 ) ) AS Size_Used FROM storageTable
    group by date
    order by date DESC
)
SELECT Size_Used INTO lastRowMinus0Value FROM tempTable
WHERE ROWNUM = lastRowMinus0
UNION ALL
SELECT Size_Used INTO lastRowMinus1Value FROM tempTable
WHERE ROWNUM = lastRowMinus1;

要显示列表中的所有联系人,我按如下方式使用光标:

_id  ----- name -----  age  -----  phone

01        John         34           111
02        Mary         44           222
03        Anna         53           333

我的意图是仅显示年龄超过40岁的联系人。 我正在寻找并且可以找到使用rawQuery的方法(尽管我还没有设法将其应用到光标),但是我找不到使用sqlite语法db.query的方法,因为我在我的代码中。

正确的方法是什么?

谢谢。

1 个答案:

答案 0 :(得分:2)

您需要像这样使用query()方法的3d和4th参数:

db.query(
    TABLE_NAME, 
    columnas, 
    "age > ?", 
    new String[] {String.valueOf(40)}, 
    null, null, CN_AGE+" ASC"
);

3d参数是SQL语句的WHERE部分(不包含关键字WHERE),并且可以包含占位符?,该占位符将被替换为数组中的项目。第四个论点。
因此3d参数中的占位符?将被"40"替换,该语句最终将为:

SELECT <columnas> FROM <TABLE_NAME> WHERE age > 30