使用 SQLite 过滤具体数据
Filtering concrete data with SQLite
我有这个简单的 sqlite 数据库:
_id ----- name ----- age ----- phone
01 John 34 111
02 Mary 44 222
03 Anna 53 333
为了显示我列表中的所有联系人,我使用如下光标:
public Cursor loadCursorContacts (){
String[] columns = new String[] {CN_ID, CN_NAME, CN_PHONE, CN_AGE};
return db.query(TABLE_NAME, columnas, null, null, null, null, CN_AGE+" ASC");
}
我的意图是只显示 40 岁以上的联系人。
我正在寻找并且可以找到使用 rawQuery 的方法(虽然我还没有设法将它应用于游标),但是我找不到使用 sqlite 语法 db.query 的方法,正如我在我的代码中所写的那样。
正确的做法是什么?
提前致谢。
您需要像这样使用 query()
方法的第 3 个和第 4 个参数:
db.query(
TABLE_NAME,
columnas,
"age > ?",
new String[] {String.valueOf(40)},
null, null, CN_AGE+" ASC"
);
3d 参数是 SQL 语句的 WHERE
部分(没有关键字 WHERE
)并且可能包含占位符 ?
,它将被第 4 个参数中的数组项。
所以 3d 参数中的占位符 ?
将被替换为 "40"
并且语句最终将是:
SELECT <columnas> FROM <TABLE_NAME> WHERE age > 30
我有这个简单的 sqlite 数据库:
_id ----- name ----- age ----- phone
01 John 34 111
02 Mary 44 222
03 Anna 53 333
为了显示我列表中的所有联系人,我使用如下光标:
public Cursor loadCursorContacts (){
String[] columns = new String[] {CN_ID, CN_NAME, CN_PHONE, CN_AGE};
return db.query(TABLE_NAME, columnas, null, null, null, null, CN_AGE+" ASC");
}
我的意图是只显示 40 岁以上的联系人。 我正在寻找并且可以找到使用 rawQuery 的方法(虽然我还没有设法将它应用于游标),但是我找不到使用 sqlite 语法 db.query 的方法,正如我在我的代码中所写的那样。
正确的做法是什么?
提前致谢。
您需要像这样使用 query()
方法的第 3 个和第 4 个参数:
db.query(
TABLE_NAME,
columnas,
"age > ?",
new String[] {String.valueOf(40)},
null, null, CN_AGE+" ASC"
);
3d 参数是 SQL 语句的 WHERE
部分(没有关键字 WHERE
)并且可能包含占位符 ?
,它将被第 4 个参数中的数组项。
所以 3d 参数中的占位符 ?
将被替换为 "40"
并且语句最终将是:
SELECT <columnas> FROM <TABLE_NAME> WHERE age > 30