SQLite query von Listview

  • hallo zusammen,


    ich habe eine listview mit SimpleCursorAdapter und OnItemClickListener. Die Liste ist mit Autos gefüllt:


    Audi
    Opel
    usw...


    beim klicken auf ein Item starte ich eine neue Activity. In dieser möchte ich nun alle Typen der Marke des angewählten Fahrzeuges in einem TableLayout darstellen:


    Audi A4
    Audi A8
    usw.


    Wenn ich alles in einer Tabelle habe funktioniert das eingentlich sehr gut. Aber im Hinblick auf meine zukünftigen Projekte möchte ich das in zwei Tabellen abspeichern, eine mit den Automarken und die andere mit den Daten von jedem Typ der Marke.


    Im moment löse ich das folgendermassen:
    Ich hole mir den String der Marke mit Hilfe der long id von der ListeView aus der Datenbank.
    Ich mache eine SQL query mit diesem String. Dies funktioniert bei mir aus für mich unverständlichen Gründen nicht....


    so hätte ichs gerne, funktioniert aber nicht:
    c = myDataBase.query(false, TABLE_CAR, new String[] {TYP}, MARKE + " like '%" + marke + "%'", null, null, null, null, null);


    so funktionierts, ist aber für mich nicht brauchbar:
    c = myDataBase.query(false, TABLE_CAR, new String[] {TYP}, MARKE + " like '%" + "audi" + "%'", null, null, null, null, null);


    hat jemand eine idee woran es liegen könnte? besten Dank!
    dude

  • Prüfe doch mal, ob du in der Variable marke überhaupt was drin hast - sonst wird im String nämlich '%null%' eingebaut und das gibt bei Autos keine Treffer.


    Java
    Log.e("MyActivity", "Marke: " + marke);


    Die Spalte MARKE in deiner TABLE_CAR ist hoffentlich String und hat die Markennamen - dann solltest du für die Abfrage MARKE + "='" + marke + "'" benutzen..


    Groß/Kleinschreibung sollte keinen Unterschied machen ("Audi" vs. "audi") - glaub ich...

  • also ich habe die abfrage wie folgt geändert:

    Code
    String whereClause =MARKE+ " = '" + marke+ "'";


    was ich nicht verstehe ist das es bei der Variable nicht funktioniert und wenn ich die durch "Audi" ersetze funktionierts...


    im logcat ist die Variable korrekt und zeigt mir Audi.....

    Code
    System.out.println(marke);


    Der Cursor scheint leer zu sein

    Code
    System.out.println(c.getCount());


    ...ergibt 0


    im SQLite Browser habe ich die Spalten als Text definiert.

  • ok! danke für die Hilfe, deine Idee mit dem überprüfen der Variable hat mich weitergebracht! Ich habe herausgefunden es hinter Audi noch ein Leerzeichen gab, dies war im SQLite Browser nicht auf anhieb ersichtlich..... Kleine Ursache aber grosse Wirkung....

  • Hast du 'Marke' als Fremdschlüssel in der 'Typ'-Tabelle eingerichtet?
    Falls ja, würde ich lieber den Primärschlüssel der Marke nehmen. Das verhindert solche Problemchen mit Leerzeichen, Groß- und Kleinschreibung etc.pp.


    Stichwort Datenbanknormalisierung.

    Je mehr Käse, desto mehr Löcher.
    Je mehr Löcher, desto weniger Käse.
    Daraus folgt: je mehr Käse, desto weniger Käse.


    »Dies ist ein Forum. Schreibt Eure Fragen in das Forum, nicht per PN!«

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!