2
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変数は正常に機能していますが、他の2つはnullを返しています。何か助けはありますか?

4

3 に答える 3

4

最良の結果を得るには、SQLiteDatabase代わりにクエリメソッドを使用してください。rawQuery

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

rawQuery混乱しやすく、SQLインジェクションから保護されないため、これが推奨されます。

于 2012-07-24T15:19:48.380 に答える
2

この方法を試してください:

Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_MOVIES + " WHERE name LIKE ? ", args);
于 2012-07-24T15:19:00.023 に答える
2
  Cursor cursor = db.rawQuery("SELECT * FROM " + TABLE_MOVIES
            + " WHERE name LIKE "+searchName, null); // Put Like When your are comparing String
于 2012-07-24T15:19:30.930 に答える