Android:SQLite,如何从多个字段中获取?

标签 android sql

基于本教程,有一个名为“fetchCountriesByName”的函数通过将“KEY_NAME”与输入的国家/地区名称进行比较来归档 ListView 内容。只会显示匹配的“KEY_NAME”记录。

http://www.mysamplecode.com/2012/07/android-listview-cursoradapter-sqlite.html

public Cursor fetchCountriesByName(String inputText) throws SQLException {
  Log.w(TAG, inputText);
  Cursor mCursor = null;
  if (inputText == null  ||  inputText.length () == 0)  {
    mCursor = mDb.query(SQLITE_TABLE, new String[] {KEY_ROWID,
    KEY_CODE, KEY_NAME, KEY_CONTINENT, KEY_REGION}, null, null, null, null, null);

}
else {
 mCursor = mDb.query(true, SQLITE_TABLE, new String[] {KEY_ROWID,
   KEY_CODE, KEY_NAME, KEY_CONTINENT, KEY_REGION}, 
   KEY_NAME + " like '%" + inputText + "%'", null,
   null, null, null, null);
 }
 if (mCursor != null) {
  mCursor.moveToFirst();
 }
 return mCursor;

}

我的问题是如何从类似于输入文本的多个字段中获取?我希望输入的文本不仅要与 KEY_NAME 进行比较,还要与 KEY_REGION 进行比较。我在粗体区域添加了“KEY_REGION”,但它不起作用。如何获取 KEY_REGION 和 KEY_NAME?

 public Cursor fetchCountriesByName(String inputText) throws SQLException {
 Log.w(TAG, inputText);
 Cursor mCursor = null;
 if (inputText == null  ||  inputText.length () == 0)  {
  mCursor = mDb.query(SQLITE_TABLE, new String[] {KEY_ROWID,
  KEY_CODE, KEY_NAME, KEY_CONTINENT, KEY_REGION}, 
  null, null, null, null, null);

 }
 else {
  mCursor = mDb.query(true, SQLITE_TABLE, new String[] {KEY_ROWID,
    KEY_CODE, KEY_NAME, KEY_CONTINENT, KEY_REGION}, 
    KEY_NAME+           KEY_REGION        + " like '%" + inputText + "%'", null,
    null, null, null, null);
 }
 if (mCursor != null) {
  mCursor.moveToFirst();
 }
 return mCursor;

}

最佳答案

使用 bool 逻辑运算符 AND 或 OR。

mCursor = mDb.query(true, SQLITE_TABLE, new String[] {KEY_ROWID,
KEY_CODE, KEY_NAME, KEY_CONTINENT, KEY_REGION}, 
KEY_NAME + " like '%" + inputText + "%' AND "+ KEY_REGION + " like '%" + inputText + "%'", null,
null, null, null, null);

关于Android:SQLite,如何从多个字段中获取?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15288680/

相关文章:

Android ContentProvider数据库查询多张表

android - 如何在 Azure Active Directory 中使 native 客户端应用程序成为单租户?

android - 在Android中更改声音

java - org.hibernate.ObjectNotFoundException : No row with the given identifier exists, 但它确实

sql - 为什么我的数据库文件与具有相同数据的普通文本文件大小相同?

android - 创建一个 Android 中所有应用程序都可以访问的 sqlite 数据库

android - 如何将 whereMatchesKeyInQuery 与指向类的指针一起使用

mysql - MySQL查询缓存何时被刷新?

java - 用于 H2 AUTO_INCRMENT PK 的 JOOQ 代码生成器,带有 japAnnotations

SQL 计算日期范围内的连续天数