Comment effectuer une requête SQLite dans une application Android?
-
12-09-2019 - |
Question
Je suis en train d'utiliser cette requête sur ma base de données Android, mais il ne retourne pas de données. Est-ce que je manque quelque chose?
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;
La solution
Cela vous ramènera le curseur requis
Cursor cursor = db.query(TABLE_NAME, new String[] {"_id", "title", "title_raw"},
"title_raw like " + "'%Smith%'", null, null, null, null);
Autres conseils
Sinon, db.rawQuery (sql, selectionArgs) existe.
Cursor c = db.rawQuery(select, null);
Cela fonctionne aussi si le modèle que vous voulez faire correspondre est une variable.
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
}
Je suis venu ici pour un rappel de la façon de mettre en place la requête, mais les exemples existants étaient difficiles à suivre. Voici un exemple avec plus d'explications.
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);
Paramètres
-
table
: le nom de la table que vous souhaitez interroger -
columns
: les noms de colonnes que vous souhaitez renvoyer. Ne pas renvoyer des données que vous n'avez pas besoin. -
selection
: les données de ligne que vous souhaitez renvoyer des colonnes (Ceci est la clause WHERE.)
-
selectionArgs
. Ceci est substitué à la?
dans la chaîne deselection
ci-dessus -
groupBy
ethaving
: Ce groupe de données en double dans une colonne avec des données ayant certaines conditions. Tous les paramètres non nécessaires peuvent être réglés sur null. -
orderBy
: trier les données -
limit
: limiter le nombre de résultats à retourner
Essayez ceci, cela fonctionne pour mon code nom est une chaîne:
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);
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow