Come eseguire una query SQLite all'interno di un'applicazione Android?
-
12-09-2019 - |
Domanda
Sto cercando di utilizzare questa query sul mio database Android, ma non restituisce alcun dato. Mi sto perdendo qualcosa?
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;
Soluzione
Ciò restituirà voi il cursore richiesto
Cursor cursor = db.query(TABLE_NAME, new String[] {"_id", "title", "title_raw"},
"title_raw like " + "'%Smith%'", null, null, null, null);
Altri suggerimenti
In alternativa, db.rawQuery (SQL, selectionArgs) esiste.
Cursor c = db.rawQuery(select, null);
Questo funziona anche se il modello che si desidera far corrispondere è una variabile.
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
}
Sono venuto qui per un promemoria di come impostare la query ma gli esempi esistenti erano difficili da seguire. Ecco un esempio con più spiegazioni.
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);
I parametri
-
table
: il nome della tabella che si desidera eseguire una query -
columns
: i nomi di colonna che si desidera venga restituito. Non restituire i dati che non è necessario. -
selection
: i dati riga che si desidera venga restituito dalle colonne (Questa è la clausola WHERE.)
-
selectionArgs
:. Questo è sostituito per la?
nella stringaselection
sopra -
groupBy
ehaving
: Questi gruppi di duplicare i dati in una colonna con i dati avendo determinate condizioni. I parametri non necessari possono essere impostati a null. -
orderBy
: ordinare i dati -
limit
: limitare il numero di risultati da restituire
Prova questo, questo funziona per il mio codice nome è una stringa:
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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow