Wie eine SQLite-Abfrage innerhalb einer Android-Anwendung ausführen?
-
12-09-2019 - |
Frage
Ich versuche, diese Abfrage auf meiner Android-Datenbank zu verwenden, aber es liefert keine Daten. Bin ich etwas fehlt?
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;
Lösung
Diese kehren Sie die gewünschte Cursor
Cursor cursor = db.query(TABLE_NAME, new String[] {"_id", "title", "title_raw"},
"title_raw like " + "'%Smith%'", null, null, null, null);
Andere Tipps
Alternativ db.rawQuery (SQL, selectionArgs) vorhanden ist.
Cursor c = db.rawQuery(select, null);
Dies wird auch funktionieren, wenn das Muster, das Sie passen wollen eine Variable ist.
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
}
Ich kam hier für eine Erinnerung daran, wie die Abfrage einzurichten, sondern die vorhandenen Beispiele waren schwer zu folgen. Hier ist ein Beispiel mit mehr Erklärung.
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);
Parameter
-
table
: der Name der Tabelle, die Sie abfragen möchten -
columns
: die Spaltennamen, die zurückgegeben werden sollen. Nicht zurückgeben Daten, die Sie nicht benötigen. -
selection
: die Zeilendaten, die Sie aus den Spalten zurückgegeben werden sollen (Dies ist die WHERE-Klausel.)
-
selectionArgs
. Dies ist für den?
imselection
String oben substituiert ist -
groupBy
undhaving
: Diese Gruppen doppelte Daten in einer Spalte mit Daten bestimmte Bedingungen aufweisen. Nicht benötigte Parameter können auf null gesetzt werden. -
orderBy
: Sortieren der Daten -
limit
: die Anzahl der Ergebnisse begrenzen zurückzukehren
Versuchen Sie dieses, das funktioniert für meinen Code Name ist ein 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);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow