SQLite - QUERY - ORDER BY

  • Antworten:5
  • OffenNicht stickyBentwortet
  • Forum-Beiträge: 34

09.05.2017, 01:03:04 via Website

Hallo ihr lieben! :)
Eigentlich wollte ich für mich eine App erstellen, mit der ich eine externe MySQL-Datenbank nutzen kann. Nach geschätzt 50 Fehlversuchen mit allen möglichen Optionen mit PHP, habe ich mich für eine interne SQLite auf meinem S7 entschieden.
Mit viel üben und umschreiben bin ich jetzt in meiner persönlichen Betaphase angelangt. CRUD funktioniert einwandfrei, Anzeigen in ListView ist (abgesehen vom unspektakulären Standard-Layout) auch realisiert. Jetzt fehlt mir aber noch die Option meine Daten nicht der Reihe nach der _id, sondern sortiert nach dem Feld "name" auszulesen. Das SQLite das Kommando ORDER BY kennt, hab ich schon mehrfach gelesen. Nur hab ich keinen Plan, wie oder wo ich das in meiner Abfrage einfügen muss bzw. was sehe ich nicht richtig.
Auszug aus meiner 'public class DataSource':

public PasswortDatenDataSource(Context context) {
    dbHelper = new PasswortDatenDBHelper(context);
}
public void open() {
    database = dbHelper.getWritableDatabase();
}
public void close() {
    dbHelper.close();
}
public PasswortDaten createPasswortDaten(String name, String adresse, String login, String passwort) {
    ContentValues values = new ContentValues();
    values.put(PasswortDatenDBHelper.COLUMN_NAME, name);
    values.put(PasswortDatenDBHelper.COLUMN_ADRESSE, adresse);
    values.put(PasswortDatenDBHelper.COLUMN_LOGIN, login);
    values.put(PasswortDatenDBHelper.COLUMN_PASSWORT, passwort);

    long insertId = database.insert(PasswortDatenDBHelper.TABLE_PASSWORT_LISTE, null, values);

    Cursor cursor = database.query(PasswortDatenDBHelper.TABLE_PASSWORT_LISTE,
            columns, PasswortDatenDBHelper.COLUMN_ID + "=" + insertId,
            null, null, null, null);

    cursor.moveToFirst();
    PasswortDaten passwortDaten = cursorToPasswortDaten(cursor);
    cursor.close();

    return passwortDaten;
}

Bei 'cursor = database.query' müsste ich das ORDER BY doch einfügen. Nur wie und wo?
Kann mir jemand einen Tipp geben? ich krieg das nicht auf die Reihe. :(

Antworten
Ludy
  • Mod
  • Blogger
  • Forum-Beiträge: 7.164

09.05.2017, 05:12:39 via App

Hallo Urs Reinhard,

db#query ist schon mal richtig, du kannst dir entweder die doc ansehen oder http://stackoverflow.com/a/818799, dort wird es aufgezeigt.

— geändert am 09.05.2017, 05:12:54

Gruß Ludy (App Entwickler)

Mein Beitrag hat dir geholfen? Lass doch ein "Danke" da.☺

Lebensmittelwarnung App-Thread

Download Samsung Firmware Tool

Antworten
  • Forum-Beiträge: 34

09.05.2017, 06:17:39 via Website

Nach einer langen Nacht hat sich mein Problem in Luft aufgelöst, sieht aber nicht so aus wie bei stackoverflow. Da wird orderby am schluss statt der 5. null angegeben. Meine lösung, die tut was sie soll, sieht so aus:

    Cursor cursor = database.query(PasswortDatenDBHelper.TABLE_PASSWORT_LISTE + " ORDER BY " + "name",
            columns, null, null, null, null, null);

Danke Dir trotzdem für deinen Tipp, Ludy. :)

Antworten
  • Forum-Beiträge: 2.902

09.05.2017, 06:33:44 via Website

Moin Urs,

noch halbschlafend mit trüben Augen nur eben mal bei mir rauskopiert :

query = "SELECT * FROM playlist_"+playlistname+ " ORDER BY "+COLUMN_TIMESTAMP+" ASC";

— geändert am 09.05.2017, 07:48:25

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten
  • Forum-Beiträge: 34

09.05.2017, 10:50:33 via Website

hallo swa00

'SELECT * FROM' funktioniert bei meiner Lösung nicht. Das waren meine ersten Versuche die Abfrage zu sortieren. Allerdings noch mit der ersten Version und MySQL. SQLite unter Android verhält sich da ein bisschen anders.
Auch die Tipps aus stackoverflow haben bei mir nicht funktioniert. Aber ich habe ja eine passende Lösung gefunden und auch schon auf meinem S7 umgesetzt.

but thank you anyway... ;)

swa00

Antworten

Empfohlene Artikel