Sqlite-android: как сравнить строку и получить идентификатор этой строки из базы данных? - PullRequest
2 голосов
/ 25 марта 2012

Привет, у меня есть "Table_Subject", и мне нужно сравнить имя субъекта с
именем субъекта "table_subject" и вернуть идентификатор этого субъекта.Я делаю это, но не возвращаю никакого значения.
Вот мой пример кода для справки.
Пожалуйста, дайте мне подсказку или код.
Заранее спасибо.

public int getSubjectId(String subjectName) 
{
    int id2 = 0;
    try
    {
        SQLiteDatabase db = this.getWritableDatabase();     
        String selectQuery= "SELECT  s_id FROM " + TABLE_SUBJECT;

        Cursor cursor = db.rawQuery(selectQuery, null);
            // looping through all rows and adding to list
            if (cursor.moveToFirst())
            {
                do {
                    if(subjectName.equals(cursor.getString(1)))
                    {
                        id2=cursor.getInt(0);                       
                    }           
                  }
                while(cursor.moveToNext());
                db.close();
            }


    }
    catch(Exception e)
    {
        e.printStackTrace();
    }
    return id2;

}

1 Ответ

6 голосов
/ 25 марта 2012

Я бы посоветовал вам использовать здесь SQL вместо java, поскольку это проще, создать соответствующий запрос, который проверяет совпадение строки и возвращает идентификатор:

public int getIdForString(String str) {
    int res;
    SQLiteDatabase db = getReadableDatabase();
    Cursor cursor = db.query(MY_TABLE, new String[] { COLUMN_ID,
            }, COLUMN_STRING + "=?",
            new String[] { str }, null, null, null, null);
    if ((cursor != null) && (cursor.getCount() > 0)) {
        cursor.moveToFirst();
        res = cursor.getInt(cursor.getColumnIndex(COLUMN_ID));
    }
    else {
        res = NOT_EXIST;
    }
    if (cursor != null) {
        cursor.close();
    }
    return res;
}

Обратите внимание, что в этом примере я использовал много констант, так как это намного проще и менее подвержено ошибкам. В этом случае константы:

  • MY_TABLE - строка, имя таблицы
  • COLUMN_ID - Строка, имя столбца идентификатора
  • COLUMN_STRING - Строка, имя столбца со строкой для сравнения
  • NOT_EXIST - int, -1, чтобы указать, что он не был найден.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...