Como realizar uma consulta SQLite dentro de um aplicativo Android?
-
12-09-2019 - |
Pergunta
Eu estou tentando usar essa consulta no meu banco de dados do Android, mas não retorna nenhum dado. Estou faltando alguma coisa?
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;
Solução
Isto irá devolver-lhe o cursor necessário
Cursor cursor = db.query(TABLE_NAME, new String[] {"_id", "title", "title_raw"},
"title_raw like " + "'%Smith%'", null, null, null, null);
Outras dicas
Alternativamente, db.rawQuery (SQL, selectionArgs) existe.
Cursor c = db.rawQuery(select, null);
Este trabalho também se o padrão que deseja jogo é uma variável.
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
}
Eu vim aqui para um lembrete de como configurar a consulta, mas os exemplos existentes eram difíceis de seguir. Aqui está um exemplo com mais explicações.
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);
Parâmetros
-
table
: o nome da tabela que você deseja consultar -
columns
: os nomes das colunas que pretende devolvidos. Não retornam dados que você não precisa. -
selection
: (. Esta é a cláusula WHERE) os dados de linha que você deseja retornado a partir das colunas -
selectionArgs
:. Este é substituído para o?
na cordaselection
acima -
groupBy
ehaving
: Este grupo duplicar os dados em uma coluna com dados tendo certas condições. Quaisquer parâmetros desnecessários pode ser definido como nulo. -
orderBy
: classificar os dados -
limit
: limite o número de resultados para retornar
Tente este, isso funciona para o meu código nome é uma string:
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);
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow