Android SQlite Abfrage

  • 15 Antworten
  • Letztes Antwortdatum
Y

yoasy

Neues Mitglied
0
hallo,
ich hoffe ich poste in der richtigen Rubrik.

in meiner DataBaseHandler Klasse
Code:
    public Contact getContact(int id) {
        SQLiteDatabase db = this.getReadableDatabase();

Cursor cursor = db.query(TABLE_CONTACTS, new String[] { KEY_ID,
KEY_VBNR, KEY_REGV, KEY_VNAME, KEY_NNAME, KEY_ADDR, KEY_PLZ, KEY_ORT, KEY_TELE }, KEY_ID + "=?",
    new String[] { String.valueOf(id) }, null, null, null, null);
        if (cursor != null)
            cursor.moveToFirst();

        Contact contact = new Contact(Integer.parseInt(cursor.getString(0)),
                cursor.getString(1), cursor.getString(2),
                cursor.getString(3), cursor.getString(4),
                cursor.getString(5), cursor.getString(6),
                cursor.getString(7), cursor.getString(8));
        // return contact
        return contact;
    }
jetzt zu meiner Frage

wie muss ich die Abfrage in meiner MainActivity erstellen
um zb. nur die Datenzeile auzulesen, die in der Spalte KEY_PLZ
den Eintrag 48458 hat.

Vielen Dank im voraus

mfg. yoasy
 
kleinerkathe schrieb:
Es gibt genau einen Kontakt bei dem die PLZ so ist? ;)
Cursor schließen?

ja nur einen

zur Zeit
 
Zuletzt bearbeitet:
Gut, dann schau dir die drei Linsk an (die sogar alle auf das gleiche Tutorial verweisen). Dort steht wie man eigene Anfragen gestaltet bzw. was dich zur Lösung bringt.
query: String[] selectionArgs You may include ?s in the "whereClause"". These placeholders will get replaced by the values from the selectionArgs array.

rawquery: Ich hoffe das muss ich dir jetzt nicht raussuchen ;)

Mit Sqlite Android Search und Example findest du bei Google tausend, wenn nicht sogar millionen Anleitungen/Tutorials/erklärungen/Videos, usw. ... Das was du machen möchtest ist absolut nichts spezielles und absolutes Standardzeugs ;)
 
soweit war ich eigentlich schon

die Seiten hatte ich schon gesehen
 
Und wo kommst du dann genau nicht weiter?
Aktuell holst du einen Contact mit einer bestimmter bestimmten ID aus der DB.
KEY_ID + "=?"
und
new String[] { String.valueOf(id) }

Jetzt darfst du aber selber überlegen wie du da an die PLZ kommst.
Sonst tippst du das nur ab (wie vermutlich die Anfrage da oben jetzt auch) und lernst nix dabei ;)
 
hallo,

irgendwie check ich es nicht
brauch ich diesen SQL String gar nicht?
SELECT * FROM myTabelle WHERE plz = '49458';

oder wo muss ich das hinpacken
 
Brauchst du nicht wenn du mit der query(...) Methode arbeitest.
Lies dir doch mal die Doku dazu durch, da steht das alles beschrieben.
Die query-methode erzeugt intern quasi den passenden SQL String.

Ich hab immer noch den Eindruck du weißt gar nicht was du da tust und hast nur Code kopiert.
Also lies dir die Doku zur SQLiteDatabase klasse durch inbesondere zur query methode und versuch erst mal zu verstehen, was dein Code bisher macht. Danach sollte das mit der PLZ ganz einfach sein
 
:smile: mir fehlt im Moment ein wenig die Geduld

Code:
  int id = 2545;
  String plz = db.getContact(id)._plz;
  String ort = db.getContact(id)._ort;
  Log.d("Daten" , plz + "  " + ort);
so suche ich ja über die ID
klappt ja auch

also müsste es ja auch so ähnlich mit der Plz gehen
sehe ich das richtig
aber wie ..grübel
 
amfa schrieb:
Brauchst du nicht wenn du mit der query(...) Methode arbeitest.
Lies dir doch mal die Doku dazu durch, da steht das alles beschrieben.
Die query-methode erzeugt intern quasi den passenden SQL String.
Es würde schon reichen die Abfrage die bereits vorhanden ist zu kopieren und entsprechend anzupassen. Aber wenn man natürlich nicht mal weiß was die macht, dann sollte man wirklich die Doku aufschlagen und nochmals (?) nachlesen.

amfa schrieb:
Ich hab immer noch den Eindruck du weißt gar nicht was du da tust und hast nur Code kopiert.
Nicht nur du hast den Eindruck ;)

@yoasy:
Sorry, dass dir keiner fertigen Code hinliefert, aber Software-/Appentwicklung ist nicht nur das zusammenkopieren fertiger Codestücke, sondern man sollte auch im Ansatz verstehen was welcher Codeteil genau macht :) oder zumindest wissen wo man nachschauen kann und das dann auch tun :) (schade, dass die Einstiegshürde in den PlayStore nicht wie im AppStore liegt, könnte vll. etwas die Qualität der Apps heben ... alternativ ist auch der Codereviewprozess nicht sonderlich schlecht, sondern sorgt für eine gewisse Qualitätsstufe aller Apps :))
 
@kleinerkathe:thumbdn:

ich will keine apps verkaufen oder so , hab ich gar nich nötig
die soll für Private Zwecke dienen.

ja den Code habe ich kopiert

genau wie du das auch machst
wenn ich mir deine Beiträge so anschaue.
 
yoasy schrieb:
Code [...] kopiert [...] wie du das auch machst

yoasy, bis zu dem Teil "man sollte auch im Ansatz verstehen" hast du wohl nicht gelesen.
 
Ich hab ja irgendwie mitleid also hier Code der funktionieren sollte mit erklärung:
Cursor cursor = db.query(TABLE_CONTACTS, new String[] { KEY_ID,
KEY_VBNR, KEY_REGV, KEY_VNAME, KEY_NNAME, KEY_ADDR, KEY_PLZ, KEY_ORT, KEY_TELE }, KEY_ID + "=?",
new String[] { String.valueOf(id) }, null, null, null, null);

Nehmen wir die Parameter der query Methode mal auseinander:
TABLE_CONTACTS -> eine konstante, die die Tabelle speichert aus der gelesen wird
in SQL wäre das der nach dem from (Select * from TABLE_NAME quasi)

new String[] { KEY_ID,
KEY_VBNR, KEY_REGV, KEY_VNAME, KEY_NNAME, KEY_ADDR, KEY_PLZ, KEY_ORT, KEY_TELE } -> Die Spalten die aus der Tabelle gelesen werden in SQL der Teil nach dem Select (also Select KEY_ID, KEY_VBNR .....) from TABLE_NAME
Jetzt wirds interessant
KEY_ID + "=?" -> hieraus baut dir die query Methode eine where clause also: SELECT KEY_ID ...... from TABLE_NAME WHERE KEY_ID="?"

new String[] { String.valueOf(id) } -> hieraus werden die Fragezeichen in der Where clause befüllt also: SELECT KEY_ID ..... FROM TABLE_NAME WHERE KEY_ID="id"
wobei natürlich id in den Fall den Wert hat den die variable id in deinem Code hat.

Also wenn du jetzt eine bestimmte PLZ suchst
musst du
KEY_ID + "=?" in KEY_PLZ + "=?" ändern.
und
new String[] { String.valueOf(id) } in new String[] { plz }

wobei plz eine String variable sein muss die die Postleitzahl enthält.

Die anderen Werte die in dem query null sind werden noch für sortierung etc gebraucht aber das kannst du falls du es mal brauchst in der Doku nachlesen
SQLiteDatabase | Android Developers

Sollte dir das immer noch nicht helfen, bin ich mit meinem Latein auch zuende oder aber ich lass mich dafür bezahlen dir deine App zu bauen ;)
 
Zuletzt bearbeitet:
yoasy schrieb:
wenn ich mir deine Beiträge so anschaue.
Hmm, also nur weil meine "Hilfestellung" in dem Forenbereich eigentlich nur darin besteht den Leuten zu zeigen: "Schau mal Google/Stackoverflow hätte dir die Frage mit etwas Eigeninitiative auch beantworter" ist alles zusammenkopiert? ;) Guck dir meine Themen hier an, da sind Codebeispiele oder Fragen bzgl. "Welche Variante wählt ihr?" :cool2:

Wenn Leute Beiträge hier schreiben, selber bereits über Logausgaben oder verschiedenen Möglichkeiten das Problem eingegrenzt haben, etc. dann hilft man gerne ... dann kopiert man sich auch mal deren Code um das nachzuvollziehen. Aber wenn jemand herkommt so wie du "Ich versteh nichts, hab hier irgendwas und will das jetzt abgewandelt haben. Los macht ihr das, damit ichs nur kopieren muss", dann kannst du (zumindest von meiner Seite aus und ich glaub auch von vielen anderen hier) keine solche Hilfe erwarten :)

Es gibt da das Sprichwort mit den getroffenen Hunden ... :cool2:

@amfa: Viel Spaß, wenn die nächste Anfrage kommt ala. "Jetzt will ich nach nem anderen Parameter suchen, mach mir das mal" :D
 
kleinerkathe schrieb:
@amfa: Viel Spaß, wenn die nächste Anfrage kommt ala. "Jetzt will ich nach nem anderen Parameter suchen, mach mir das mal" :D

Was soll ich machen, Helfersyndrom, liegt in der Familie :D
Ausserdem hab ich ja gesagt weiteres Consulting kostet danach einen anständingen Consultant Stundensatz ;D
 
  • Danke
Reaktionen: kleinerkathe
danke
schwere Geburt ..ich weiß
 

Ähnliche Themen

M
Antworten
21
Aufrufe
1.305
swa00
swa00
Mr-Fisch
Antworten
5
Aufrufe
941
migi01
migi01
Mr-Fisch
Antworten
8
Aufrufe
989
Mr-Fisch
Mr-Fisch
M
Antworten
9
Aufrufe
773
mkuz24
M
A
Antworten
5
Aufrufe
680
swa00
swa00
Zurück
Oben Unten