Как выполнить запрос SQLite в приложении для Android?
-
12-09-2019 - |
Вопрос
Я пытаюсь использовать этот запрос к своей базе данных 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;
Решение
Это вернет вам требуемый курсор
Cursor cursor = db.query(TABLE_NAME, new String[] {"_id", "title", "title_raw"},
"title_raw like " + "'%Smith%'", null, null, null, null);
Другие советы
В качестве альтернативы существует db.rawQuery(sql, selectionArgs).
Cursor c = db.rawQuery(select, null);
Это также сработает, если шаблон, которому вы хотите соответствовать, является переменной.
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
}
Я пришел сюда за напоминанием о том, как настроить запрос, но существующим примерам было трудно следовать.Вот пример с более подробным объяснением.
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
:При этом дублирующиеся данные группируются в столбце с данными, имеющими определенные условия.Любым ненужным параметрам можно присвоить значение null.orderBy
:сортировка данныхlimit
:ограничьте количество возвращаемых результатов
Попробуйте это, это работает для моего кода имя - это строка:
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);
Не связан с StackOverflow