String-Problem (bei Sqlite-query)

E

EcDroid

Neues Mitglied
0
Hallo allerseits,

ich beschäftige mich erst seit kurzem mit JAVA und Android und habe eine Problem:

Folgende Code funktioniert:
private void ladeDaten(String query1) {

String keyword = "name1 LIKE '%"+"Test"+"%'";
Cursor klassenCursor = mDatenbank.query(
"Tabelle",
new String[] {
"name1",
"name2",
},
keyword, null, null, null, null
);

...und wenn ich den String "Test" durch query1 ersetze, dann stürzt der Emulator ab :sad:
String keyword = "name1 LIKE '%"+query1+"%'";

Hat jemand eine Idee, warum das so ist? Ich habe mir keyword auch schon in einem Toast ausgeben lassen...beide Male erhalte ich den selben String, was ja auch okay wäre...

Danke
EcDroid


PS: Ich verwende eclipde als IDE...
 
Zuletzt bearbeitet:
Bitte bei Abstürzen immer Logcat-Ausgabe posten.
 
Uff...LogCat...davon habe ich schon gehört :wubwub:
Da muss ich mich wieder reinlesen...:wubwub:

Eins habe ich gerade rausgefunden...
ladeDaten(String query1) wird in einem onItemSelected eines Spinners aufgerufen und es sieht fast danach aus, dass query1 noch null ist...puh...muss man da etwas bestimmtes einfügen, damit ladeDaten(String query1) erst aufgerufen wird, wenn der Wert (=Eintrag des Spinners) fix da ist...ein Delay??
 
wie schon gesagt - logcat posten ( dafür musst dich nicht wirklich einlesen, ist nur ein kopieren von roten zeilen :) in der logcat ansicht )

alles andere ist ein ratespiel :D
 
Ja, sorry :wubwub:

06-14 07:08:51.212 .....
06-14 07:10:29.332: WARN/PackageManager(39): Code path for pkg : test.spinner1 changing from /data/app/test.spinner1-1.apk to /data/app/test.spinner1-2.apk
06-14 07:10:29.363: WARN/PackageManager(39): Resource path for pkg : test.spinner1 changing from /data/app/test.spinner1-1.apk to /data/app/test.spinner1-2.apk
06-14 07:10:31.372: WARN/RecognitionManagerService(39): no available voice recognition services found
06-14 07:10:36.652: WARN/ActivityThread(326): Application test.spinner1 is waiting for the debugger on port 8100...
06-14 07:10:45.132: WARN/ActivityManager(39): Launch timeout has expired, giving up wake lock!
06-14 07:10:46.522: WARN/ActivityManager(39): Activity idle timeout for HistoryRecord{45fd8260 test.spinner1/.SpinnerActivity}

Ufff...
 
Zuletzt bearbeitet:
Und so ist die LogCat, wenn ich den String mit einem Fixwert setze:

06-14 07:25:57.953....06-14 07:27:22.198:

WARN/PackageManager(68): Code path for pkg : test.spinner1 changing from /data/app/test.spinner1-2.apk to /data/app/test.spinner1-1.apk
06-14 07:27:22.219: WARN/PackageManager(68): Resource path for pkg : test.spinner1 changing from /data/app/test.spinner1-2.apk to /data/app/test.spinner1-1.apk
06-14 07:27:27.248: WARN/RecognitionManagerService(68): no available voice recognition services found
06-14 07:27:39.099: ERROR/CursorWindow(317): need to grow: mSize = 1048576, size = 99, freeSpace() = 24, numRows = 5405
06-14 07:27:39.099: ERROR/CursorWindow(317): not growing since there are already 5405 row(s), max size 1048576
06-14 07:27:39.129: ERROR/CursorWindow(317): The row failed, so back out the new row accounting from allocRowSlot 5404
06-14 07:27:39.129: ERROR/Cursor(317): Failed allocating fieldDir at startPos 0 row 5404
06-14 07:27:50.018: ERROR/CursorWindow(317): need to grow: mSize = 1048576, size = 99, freeSpace() = 24, numRows = 5405
06-14 07:27:50.018: ERROR/CursorWindow(317): not growing since there are already 5405 row(s), max size 1048576
06-14 07:27:50.028: ERROR/CursorWindow(317): The row failed, so back out the new row accounting from allocRowSlot 5404
06-14 07:27:50.038: ERROR/Cursor(317): Failed allocating fieldDir at startPos 0 row 5404
06-14 07:27:50.198: WARN/InputManagerService(68): Window already focused, ignoring focus gain of: com.android.internal.view.IInputMethodClient$Stub$Proxy@45030b30


...da gibt es kein Problem.
 
Zuletzt bearbeitet:
Eins finde ich auch komisch, aber das liegt wohl an meinen beschränkten Java-Kenntnissen....

Das funktioniert:
Cursor klassenCursor = mDatenbank.query(
"Tabelle",
new String[] {
"feld1",
"feld2"
},
null, null, null, null,null );

und das nicht:
String keyword = null;
Cursor klassenCursor = mDatenbank.query(
"Tabelle",
new String[] {
"feld1",
"feld2"
},
keyword, null, null, null,null );

Kann man einen String nicht null setzen?
 
Zuletzt bearbeitet:
Gah doch mal mit dem Debugger durch und sag erstmal, bei welcher Zeile der Emulator abstürzt (und sag uns dann nicht nur die Zeilennummer :D). Und sage auch, was Du mit "abstürzen" eigentlich meinst. Meinst Du, dass Dein Programm mit einem Fatal Close abstürzt? Oder verschwindet der ganze Emulator?

Kann es sein, dass Du "Pokemon Exception Handlung" (gotta catch them all) betreibst und die eigentliche Fehlermeldung unterdrückst? :D
 
  • Danke
Reaktionen: the_alien
DieGoldeneMitte schrieb:
Kann es sein, dass Du "Pokemon Exception Handlung" (gotta catch them all) betreibst[...]
Haha, das ist super, das muss ich mir merken :D
 
Hi :)

Ich bin zwar neu in dem Geschäft, aber vielleicht lohnt es sich ja mal folgende Idee auszuprobieren:
String keyword = "name1 LIKE '%?%'";
Cursor klassenCursor = mDatenbank.query(
"Tabelle",
new String[] {
"name1",
"name2",
},
keyword, new String[] {query1}, null, null, null
);

name1 ist doch auch als Spalte in der DB definiert, oder?

HTH,
OWLer
 
So Problem gelöst...Im Spinner war der erste Eintrag ein Eintrag, den es nicht in der Datenbankliste gibt...ich muss da wohl noch eine Fehlerabfrage oder ähnliches einbauen.

Danke
 

Ähnliche Themen

R
Antworten
6
Aufrufe
970
swa00
swa00
Y
Antworten
4
Aufrufe
1.170
swa00
swa00
Zurück
Oben Unten