Как выполнить запрос SQLite в приложении Android? - PullRequest
65 голосов
/ 07 августа 2009

Я пытаюсь использовать этот запрос в моей базе данных Android, но он не возвращает никаких данных. Я что-то упустил?

SQLiteDatabase db = mDbHelper.getReadableDatabase();
    String select = "Select _id, title, title_raw from search Where(title_raw like " + "'%Smith%'" +
    ")";        
    Cursor cursor = db.query(TABLE_NAME, FROM, 
            select, null, null, null, null);
    startManagingCursor(cursor);
    return cursor;

Ответы [ 5 ]

108 голосов
/ 07 августа 2009

Это вернет вам требуемый курсор

Cursor cursor = db.query(TABLE_NAME, new String[] {"_id", "title", "title_raw"}, 
                "title_raw like " + "'%Smith%'", null, null, null, null);
57 голосов
/ 10 августа 2009

В качестве альтернативы существует db.rawQuery (sql, selectionArgs).

Cursor c = db.rawQuery(select, null);
26 голосов
/ 21 марта 2012

Это также будет работать, если шаблон, который вы хотите сопоставить, является переменной.

dbh = new DbHelper(this);
        SQLiteDatabase db = dbh.getWritableDatabase();
        Cursor c = db.query("TableName", new String[]{"ColumnName"}
        , "ColumnName LIKE ?" ,new String[]{_data+"%"}, null, null, null);
        while(c.moveToNext())
        {
            // your calculation goes here
        }
10 голосов
/ 24 октября 2016

Я пришел сюда за напоминанием о том, как настроить запрос, но существующие примеры были трудны для подражания. Вот пример с дополнительными пояснениями.

SQLiteDatabase db = helper.getReadableDatabase();

String table = "table2";
String[] columns = {"column1", "column3"};
String selection = "column3 =?";
String[] selectionArgs = {"apple"};
String groupBy = null;
String having = null;
String orderBy = "column3 DESC";
String limit = "10";

Cursor cursor = db.query(table, columns, selection, selectionArgs, groupBy, having, orderBy, limit);

Параметры

  • table: имя таблицы, которую вы хотите запросить
  • columns: имена столбцов, которые вы хотите вернуть. Не возвращайте данные, которые вам не нужны.
  • selection: данные строки, которые вы хотите вернуть из столбцов (это предложение WHERE.)
  • selectionArgs: он заменяет ? в строке selection выше.
  • groupBy и having: группирует дублирующиеся данные в столбце с данными, имеющими определенные условия. Любые ненужные параметры могут быть установлены в нуль.
  • orderBy: сортировка данных
  • limit: ограничить количество возвращаемых результатов
1 голос
/ 14 апреля 2014

Попробуйте, это работает для моего кода имя является строкой:

cursor = rdb.query(true, TABLE_PROFILE, new String[] { ID,
    REMOTEID, FIRSTNAME, LASTNAME, EMAIL, GENDER, AGE, DOB,
    ROLEID, NATIONALID, URL, IMAGEURL },                    
    LASTNAME + " like ?", new String[]{ name+"%" }, null, null, null, null);
...