首页 > 解决方案 > 在 SQLite 数据库中搜索特定字符串 - Android SDK

问题描述

我在 Android SDK 中使用 SQLite 数据库,我知道这是一个非常简单的问题,但我有以下功能。我正在尝试搜索用户名是否在 SQL 数据库中,但我想不出我将如何构造查询。

如果字符串“user”在表“ACCOUNT_TABLE”中,那么搜索的正确方法是什么

public boolean isUser(String user){
        SQLiteDatabase db = this.getReadableDatabase();
        String queryString = "SELECT " + COLUMN_USERNAME + " FROM " + ACCOUNT_TABLE + " WHERE " (???);

        db.close();
        /*if(found in database) 
            return true;
        else 
            return false;*/
    }

标签: javaandroidsqlsqliteandroid-sqlite

解决方案


正确的方法是使用rawQuery()方法,该方法需要 2 个参数:

  1. 带有您要传递的参数的占位符的 sqlSELECT语句?
  2. 包含 sql 语句参数的所有值的String数组,按照它们在语句中出现的顺序排列

rawQuery()返回 aCursor您可以检查它是否包含任何行,如果包含,则表示user您搜索的表中存在:

public boolean isUser(String user) {
    SQLiteDatabase db = this.getReadableDatabase();
    String queryString = "SELECT 1 FROM " + ACCOUNT_TABLE + " WHERE " + COLUMN_USERNAME + " = ?";
    Cursor c = db.rawQuery(queryString, new String[]{user});
    boolean result = c.getCount() > 0;
    c.close();
    db.close();
    return result;
}

推荐阅读