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

Wieso kann ich nicht auf Datenbank zugreifen?

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von DalvikCoder, 22.01.2010.

  1. DalvikCoder, 22.01.2010 #1
    DalvikCoder

    DalvikCoder Threadstarter Neuer Benutzer

    Beiträge:
    22
    Erhaltene Danke:
    0
    Registriert seit:
    22.01.2010
    Hallo Leute,

    ich versuche aktuell ein kleines Programm zu schreiben mit dem ich Daten aus einer DB lesen und darstellen kann.

    Das Programm funktioniert insgesamt, aber wenn ich die Zeile mit Insert Into oder die Anweisung zum Lesen der Daten einfüge kommt im Emulator immer die Fehlermeldung Prozess wurde unterbrochen.

    Was ist an dem Code den falsch?? Siehe unten:



    public final static String MY_DATABASE_NAME = "datenbank.db";
    public final static String MY_DATABASE_TABLE = "tabelletab";

    try {
    myDB = this.openOrCreateDatabase(MY_DATABASE_NAME, MODE_WORLD_WRITEABLE, null);

    myDB.execSQL("CREATE TABLE IF NOT EXISTS " + MY_DATABASE_TABLE + "Spalte1 integer primary key, Spalte2 varchar(50), Spalte3 blob, Spalte4 text;");
    myDB.execSQL(("INSERT INTO " + MY_DATABASE_TABLE + " (Spalte1, Spalte2 )" + " VALUES ('1', 'WertFuer1');"));
    ......
    ....
    ..

    Das komische ist, das nur die Zeilen myDB.execSQL die fehler erzeugen.Wie gesagt, wenn ich die zwei Zeilen auskommentiere gibts es kein Problem. Aber ich kann eben nicht auf die Daten zugreifen :-(

    Bin schon am verzweifeln. Bitte helft mir :-((

    Gruß
    Coder
     
    Zuletzt bearbeitet: 22.01.2010
  2. szallah, 22.01.2010 #2
    szallah

    szallah Android-Lexikon

    Beiträge:
    1,009
    Erhaltene Danke:
    126
    Registriert seit:
    20.11.2009
    Phone:
    Motorola Razr i
    wie wär's wenn du mal die fehlermeldung postest? meine glaskugel iss grad defekt... ;)

    und da ich selbst anfänger bin iss der codeschnipsel für mich ohnehin etwas unklar. haste ne separate dbhelper.java oder ist alles im im "hauptprogramm"?
     
  3. Fr4gg0r, 22.01.2010 #3
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    Ich würde sagen dass man die 1 nicht in ' setzt, da es sich um ein integer Feld handelt?
     
  4. DalvikCoder, 22.01.2010 #4
    DalvikCoder

    DalvikCoder Threadstarter Neuer Benutzer

    Beiträge:
    22
    Erhaltene Danke:
    0
    Registriert seit:
    22.01.2010
    Hi szallah,

    also eine Fehlermeldung von Eclipse gibt es in dem Fall gar nicht. Sondern im Virtual-Device erscheint "Die Anwendung blablabla (Prozess de.org.myk) wurde unerwartet beendet. Versuchen sie es erneut"

    Ich bin auch noch ein neuling was java betrifft. Was meinst du mit dbhelper.java

    Der gesamte Quelltext ist im moment noch in einer Datei. Ich wollte erstmal ertasten wie ich einen zugriff auf eine Datenbank realisieren kann.

    Irgendwie habe ich kein tutorial gefunden aus dem ich wirklich schlau wurde. Ich weiß z.B. auch nicht wie ich die Datenbank mitgeben kann.

    Viele offene Fragen, ich vermute aber das es daran liegt das ich mich mit Java nicht so gut auskenne. Wobei ich die Meinung vertrete kann ich eine Sprache programmieren ist die andere auch nicht so schwer zu lernen.

    Kannst du mir das mit der dbhelper.java noch mal erklären?

    Gruß
    Dalvik
     
  5. szallah, 22.01.2010 #5
    szallah

    szallah Android-Lexikon

    Beiträge:
    1,009
    Erhaltene Danke:
    126
    Registriert seit:
    20.11.2009
    Phone:
    Motorola Razr i
    @DalvikCoder

    heute abend nach der arbeit sag ich mehr zur DBHelper... spontan aber noch folgendes:
    beim create-table-statemente fehlt ein leerzeichen, weshalb die tabelle die du erzeugst "tabelletabSpalte1" heißt. demnach kann im zweiten statement auch nicht auf "tabelletab" zugegriffen werden, denn das existiert ja noch garnicht.

    und:
    natürlich gibt es ne fehlermeldung. du weiß nur nicht wo so wie's aussieht. in eclipse gibt's oben in diesem navi-ding den DDMS-knopf. dort iss n großes fenster wo alles protokolliert wird. da stehen auch fehlermeldungen drin.
    steht da nix brauchbares kannste auch noch mit der Log-Klasse selbst fehler ausgeben.
    aber dazu mehr heute abend... ;)
     
  6. DalvikCoder, 22.01.2010 #6
    DalvikCoder

    DalvikCoder Threadstarter Neuer Benutzer

    Beiträge:
    22
    Erhaltene Danke:
    0
    Registriert seit:
    22.01.2010
    Ich habe dir mal den Originalcode per pm geschickt. Ich vermute, wie ich auch geschrieben habe, das ich gar keine DB offen habe bzw. kein Zugriff darauf habe.
    Na dann gedulde ich mich mal bis heut Abend. Danke für deine Hilfe!

    Gruß
    Murat
     
  7. DalvikCoder, 22.01.2010 #7
    DalvikCoder

    DalvikCoder Threadstarter Neuer Benutzer

    Beiträge:
    22
    Erhaltene Danke:
    0
    Registriert seit:
    22.01.2010
    @Fr4gg0r

    bis dahin komm ich ja nicht mal. Schon die CREATETABLE Direktive funzt nicht :confused:
     
  8. swordi, 22.01.2010 #8
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    es gibt immer eine fehlermeldung im eclipse

    wurde schon 100 mal durchgekaut

    klick auf die debug view im eclipse dann siehst du den logcat mit allen exceptions die da auftreten. dann wirst du den fehler entweder sehr schnell selbst finden oder du kopierst die roten zeilen hier rein
     
  9. DalvikCoder, 22.01.2010 #9
    DalvikCoder

    DalvikCoder Threadstarter Neuer Benutzer

    Beiträge:
    22
    Erhaltene Danke:
    0
    Registriert seit:
    22.01.2010
    Jetzt habe ichs! Dank an Fr4gg0r,

    im DDMS steht folgendes


    01-22 14:41:37.505: ERROR/AndroidRuntime(254): at android.os.Handler.dispatchMessage(Handler.java:99)
    01-22 14:41:37.505: ERROR/AndroidRuntime(254): at android.os.Looper.loop(Looper.java:123)
    01-22 14:41:37.505: ERROR/AndroidRuntime(254): at android.app.ActivityThread.main(ActivityThread.java:4203)
    01-22 14:41:37.505: ERROR/AndroidRuntime(254): at java.lang.reflect.Method.invokeNative(Native Method)
    01-22 14:41:37.505: ERROR/AndroidRuntime(254): at java.lang.reflect.Method.invoke(Method.java:521)
    01-22 14:41:37.505: ERROR/AndroidRuntime(254): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
    01-22 14:41:37.505: ERROR/AndroidRuntime(254): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:549)
    01-22 14:41:37.505: ERROR/AndroidRuntime(254): at dalvik.system.NativeStart.main(Native Method)
    01-22 14:41:37.505: ERROR/AndroidRuntime(254): Caused by: android.database.sqlite.SQLiteException: near "No": syntax error: CREATE TABLE IF NOT EXISTS Sureler No integer primary key, SureIsim varchar(50), Arabca blob, TuerkceAnlam text;
    01-22 14:41:37.505: ERROR/AndroidRuntime(254): at android.database.sqlite.SQLiteDatabase.native_execSQL(Native Method)
    01-22 14:41:37.505: ERROR/AndroidRuntime(254): at android.database.sqlite.SQLiteDatabase.execSQL(SQLiteDatabase.java:1497)
    01-22 14:41:37.505: ERROR/AndroidRuntime(254): at de.org.myk.main.onCreate(main.java:32)
    01-22 14:41:37.505: ERROR/AndroidRuntime(254): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1123)
    01-22 14:41:37.505: ERROR/AndroidRuntime(254): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2364)
    01-22 14:41:37.505: ERROR/AndroidRuntime(254): ... 11 more
     
  10. szallah, 22.01.2010 #10
    szallah

    szallah Android-Lexikon

    Beiträge:
    1,009
    Erhaltene Danke:
    126
    Registriert seit:
    20.11.2009
    Phone:
    Motorola Razr i
    ich bin zwar immer noch auf der arbeit, aber mach's doch einfach mal schritt für schritt.
    anstatt beim create table anzugeben welcher dateityp reinkommt kannste einfach die spalten als solche anlegen. sqlite kann das von sich aus dynamisch verwalten und sucht den besten datentyp selbst wenn nix entsprechendes angegeben ist.
    man kann kein sql wie bei mysql verwenden. zumindest nicht immer. probier's also mal ohne die datentyp-angabe.

    PS:
    was soll "No integer primary key" machen? darauf verweist ja die fehlermeldung...
    ich würd' mal tippen das soll eigentlich "integer not null primary key autoincrement" heißen...
     
    Zuletzt bearbeitet: 22.01.2010
  11. Fr4gg0r, 23.01.2010 #11
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    Was mir gestern aufgefallen ist ( meine Datenbank funktioniert jetzt endlich :)):
    Beim Installieren einer neuen Version wird die alte Datenbank nicht gelöscht, in meinem Fall war das so, dass ich später noch eine Spalte einfügen wollte und das führt dann zu Errors wenn man auf diese Verweist ( Query z.B.).
     
  12. swordi, 23.01.2010 #12
    swordi

    swordi Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    du musst vorher die app komplett löschen

    bei einem update deiner app musst die dbVersion überpfrüfen und damit arbeiten, wenn sich an der db selbst etwas ändert
     
  13. szallah, 23.01.2010 #13
    szallah

    szallah Android-Lexikon

    Beiträge:
    1,009
    Erhaltene Danke:
    126
    Registriert seit:
    20.11.2009
    Phone:
    Motorola Razr i
    @Fr4gg0r

    und woran lag's?
     
  14. Fr4gg0r, 23.01.2010 #14
    Fr4gg0r

    Fr4gg0r App-Anbieter (Werbung)

    Beiträge:
    2,506
    Erhaltene Danke:
    447
    Registriert seit:
    21.12.2009
    Fehler im Query bzw. beim Verarbeiten des Cursors.
    Läuft deiner jetzt?
    Sonst kopier dein SQLite relevanten Code doch in Pastebin und wir schauen uns den
    mal an.
     
  15. szallah, 24.01.2010 #15
    szallah

    szallah Android-Lexikon

    Beiträge:
    1,009
    Erhaltene Danke:
    126
    Registriert seit:
    20.11.2009
    Phone:
    Motorola Razr i
    @Fr4gg0r

    ich bin nicht der threaderöffner... meine datenbank schnurrt wie ein kätzchen... :D
     
  16. DalvikCoder, 27.01.2010 #16
    DalvikCoder

    DalvikCoder Threadstarter Neuer Benutzer

    Beiträge:
    22
    Erhaltene Danke:
    0
    Registriert seit:
    22.01.2010
    Hi,

    danke noch mal an alle für die Unterstützung. Ich habe das Problem mittlerweile lösen können.

    Ich will es mal so sagen es war einfach ein Syntax-Problem. Funktioniert einwandfrei.


    P.S. Das No in No Integer Primary Key ist der Name der Spalte ;-)
     

Diese Seite empfehlen