1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

String-Problem (bei Sqlite-query)

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von EcDroid, 13.06.2011.

  1. EcDroid, 13.06.2011 #1
    EcDroid

    EcDroid Threadstarter Neuer Benutzer

    Beiträge:
    10
    Erhaltene Danke:
    0
    Registriert seit:
    13.06.2011
    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: 13.06.2011
  2. Kranki, 13.06.2011 #2
    Kranki

    Kranki Ehrenmitglied

    Beiträge:
    3,831
    Erhaltene Danke:
    814
    Registriert seit:
    19.07.2009
    Tablet:
    Samsung Galaxy Tab 3 7.0 Lite
    Bitte bei Abstürzen immer Logcat-Ausgabe posten.
     
  3. EcDroid, 13.06.2011 #3
    EcDroid

    EcDroid Threadstarter Neuer Benutzer

    Beiträge:
    10
    Erhaltene Danke:
    0
    Registriert seit:
    13.06.2011
    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??
     
  4. swordi, 14.06.2011 #4
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    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
     
  5. EcDroid, 14.06.2011 #5
    EcDroid

    EcDroid Threadstarter Neuer Benutzer

    Beiträge:
    10
    Erhaltene Danke:
    0
    Registriert seit:
    13.06.2011
    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: 14.06.2011
  6. EcDroid, 14.06.2011 #6
    EcDroid

    EcDroid Threadstarter Neuer Benutzer

    Beiträge:
    10
    Erhaltene Danke:
    0
    Registriert seit:
    13.06.2011
    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: 14.06.2011
  7. EcDroid, 14.06.2011 #7
    EcDroid

    EcDroid Threadstarter Neuer Benutzer

    Beiträge:
    10
    Erhaltene Danke:
    0
    Registriert seit:
    13.06.2011
    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: 14.06.2011
  8. DieGoldeneMitte, 14.06.2011 #8
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    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
     
    the_alien bedankt sich.
  9. the_alien, 14.06.2011 #9
    the_alien

    the_alien Android-Lexikon

    Beiträge:
    1,559
    Erhaltene Danke:
    184
    Registriert seit:
    04.05.2009
    Haha, das ist super, das muss ich mir merken :D
     
  10. OWLer, 14.06.2011 #10
    OWLer

    OWLer Neuer Benutzer

    Beiträge:
    3
    Erhaltene Danke:
    0
    Registriert seit:
    13.06.2011
    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
     
  11. EcDroid, 14.06.2011 #11
    EcDroid

    EcDroid Threadstarter Neuer Benutzer

    Beiträge:
    10
    Erhaltene Danke:
    0
    Registriert seit:
    13.06.2011
    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
     

Diese Seite empfehlen