java - SQLite 中的 Select 语句不返回结果

标签 java android sqlite

那么下面必须返回存储在DB中的用户密码

public String getPasswordByUsername(String userName)
{
    SQLiteDatabase db = this.getReadableDatabase();

    String selectQuery = "SELECT  * FROM " + TABLE_USERS + " WHERE "
            + KEY_USERS_USERNAME + " = " + userName;

    Cursor cursor = db.rawQuery(selectQuery, null);
    if (cursor.getCount() < 1) {
        cursor.close();
        return "NOT EXIST";
    }

    cursor.moveToFirst();
    String password = cursor.getString(cursor.getColumnIndex("password"));
    cursor.close();
    return password;
}

当我尝试获取用户“w”的密码时,我得到:

12-24 10:54:23.639: E/AndroidRuntime(11237): FATAL EXCEPTION: main
12-24 10:54:23.639: E/AndroidRuntime(11237): Process: com.example.doit, PID: 11237
12-24 10:54:23.639: E/AndroidRuntime(11237): android.database.sqlite.SQLiteException: no such column: w (code 1): , while compiling: SELECT  password FROM users WHERE username = w

这是存储在数据库中的内容: enter image description here

如何获取正确的密码?谢谢。

最佳答案

"= "+ userName 更改为:"= '"+ username+ "'"

关于java - SQLite 中的 Select 语句不返回结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34455368/

相关文章:

java - 使用 Eclipse 创建新的 JUnit 测试用例

android 返回 Activity 时它被销毁并且没有恢复

java - 找不到构建 gradle 3.0.1

android - 在透明背景上的状态栏上永久显示扩展字符串(天气温度),所有字符大小合适且可见

javascript - node.js sqlite3 - 动态添加行时出错

java - 如何序列化类型 X 的列表,填充类型 Y 的对象,该对象扩展 X,并且在反序列化时仍然获得 Y 元素?

java - 使用自动标签的开源 Java ASN.1 解码器

javascript - 如何连接到现有数据库 Sqlite3 node.js

java - 将数据从 JSON Android 保存到 SQLite

java - 用于 java.time 日期时间类型的 Vaadin Flow 渲染器,不仅限于 LocalDateTime 和 LocalDate 类