【问题标题】:Cursor returning null光标返回 null
【发布时间】:2012-07-24 15:15:30
【问题描述】:
public String getContact(String searchName) {
    SQLiteDatabase db = this.getReadableDatabase();

    String[] args = { searchName };

    Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_MOVIES
            + " WHERE name =? ", args);

    String iName = null, iDiretor = null, iGenre = null;

    cursor.moveToFirst();
    while (!cursor.isAfterLast()) {
        iName = cursor.getString(cursor.getColumnIndex(KEY_NAME));
        iDiretor = cursor.getString(cursor.getColumnIndex(KEY_DIRECTOR));
        iGenre = cursor.getString(cursor.getColumnIndex(KEY_GENRE));
        cursor.moveToNext();
    }

    cursor.close();

iName 变量工作正常,但其他两个返回 null。有什么帮助吗?

【问题讨论】:

  • 您确定在数据库中设置了流派和导演吗?
  • *是数据库中最后一条记录上设置的流派和导演
  • 流派和导演未设置。多可惜!谢谢大佬!

标签: android sqlite cursor


【解决方案1】:

使用SQLiteDatabase 查询方法而不是rawQuery 以获得最佳结果。

db.query(TABLE_MOVIES, null, "name = ?", args, null);

这是首选,因为rawQuery 很容易搞砸并且不能防止 SQL 注入。

【讨论】:

    【解决方案2】:

    试试这个方法:

    Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_MOVIES + " WHERE name LIKE ? ", args);
    

    【讨论】:

      【解决方案3】:
        Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_MOVIES
                  + " WHERE name LIKE "+searchName, null); // Put Like When your are comparing String
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-11-06
        • 1970-01-01
        • 2017-11-08
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多