web-dev-qa-db-fra.com

Comment effectuer une requête SQLite dans une application Android?

J'essaie d'utiliser cette requête sur ma base de données Android, mais elle ne renvoie aucune donnée. Me manque-t-il 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;
65
Dennie

Cela vous retournera le curseur requis

Cursor cursor = db.query(TABLE_NAME, new String[] {"_id", "title", "title_raw"}, 
                "title_raw like " + "'%Smith%'", null, null, null, null);
109
Prashast

Sinon, db.rawQuery (sql, selectionArgs) existe.

Cursor c = db.rawQuery(select, null);
57
xiojason

Cela fonctionnera également si le motif que vous souhaitez associer 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
        }
26
Gautam Mandsorwale

Je suis venu ici pour vous rappeler comment configurer 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 voulez interroger
  • columns: les noms de colonnes que vous voulez renvoyer. Ne retournez pas de données inutiles.
  • selection: les données de ligne que vous voulez renvoyer à partir des colonnes (Ceci est la clause WHERE.)
  • selectionArgs: Ceci remplace le ? dans la chaîne selection ci-dessus.
  • groupBy et having: Ceci regroupe les données en double dans une colonne avec des données présentant certaines conditions. Tous les paramètres inutiles peuvent être définis sur null.
  • orderBy: trier les données
  • limit: limiter le nombre de résultats à renvoyer
10
Suragch

Essayez ceci, cela fonctionne car mon nom de code 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);
1
styling