Datenbank anzeigen funktioniert nicht - id_column

  • Hi 8)




    Ich versuche mit vorhergehendem Code ein Datenbank anzuzeigen -


    die Fehlermeldung, die erscheint heißt


    "Java illegal Argument exception - Column _id does not exists


    Autoincrement ID existiert aber -


    Kann man irgendwie in die erstellte Datenbank reinschauen, ob die Spalte wirklich nicht existiert?
    Erstellt ist sie und befindet sich auch im entsprechenden Verzeichnis.

  • Dann schau dir einfach mal deinen kompletten Source für die columns genauer an, bzw poste es doch alles was dazu gehört statt nur einen Teil :)



    Bzgl. Datenbank Öffnen kannst du adb shell verwenden.


    Um zum data Verzeichnis zu gelangen:


    cd /data/data


    #Dein Projekt
    cd de.irgendwas.projekt


    # Verzeichnis der DB:
    cd databases


    # Ansehen was alles drin liegt:
    ls


    # Zur Zable "projekt.db" verbinden
    sqlite3 projekt.db



    Für alles weitere:


    http://www.sqlite.org/sqlite.html


    ;)

  • Hallo Triton,


    ich sehe zwei sachen:
    1) mit deinem query kriegt du nur die GESAMT Spalte zurück, nie die ID spalte. Also entweder SELECT * FROM GESAMT oder SELECT _id, ORT FROM GESAMT


    2) deine primary spalte muss zwingend "_id" benannt sein, ansonsten funktioniert der CursorAdapter nicht


    Cursor Adapter:
    Adapter that exposes data from a Cursor to a ListView widget. The Cursor must include a column named "_id" or this class will not work.

  • Erst mal danke für die Antworten


    drumliner: die Beschreibung hat geholfen, so konnte ich sehen, dass in der DB gar nix steht :(


    Nach langem Gefummel hab ich das große Projekt erst mal zurückgestellt und ne kleine Testapp
    geschrieben, die nur eine kleine DB erstellen sollte und siehe da, hier hab ich festgestellt, dass
    der Create-String wohl fehlerhaft ist. antifish: _id ist es nicht - das wusste ich selbst.


    In der TestApp scheint es aber nun zu funktionieren:


    Code
    String CreateTBL ="CREATE TABLE "+ DB_Table1 + " (_id INTEGER PRIMARY KEY AUTOINCREMENT,"
    		+Row01 + " TEXT, "
    		+Row02 + " TEXT)";


    Wenn ich allerdings die DB mit adb Shell aufrufe erscheint dieses hier (DB ist noch leer)


    [Blockierte Grafik: http://img269.imagevenue.com/loc440/th_131615927_qqqqq_122_440lo.jpg]


    Ist das in Ordnung ??? [Blockierte Grafik: http://www.wuerziworld.de/Smilies/mx/mix40.gif] - hab nur eine Tabelle erstellt (die obere)

  • Ja die Metadata-Tabelle wird immer mit erstellt, aber frag mich nicht, was da gespeichert wird ^^
    Es gibt für Eclipse bzw. gab es mal einen Datenbankviewer für gerootete Geräte.
    Wäre evt. dann auch eine einfachere Möglichkeit ;)

    MfG,
    Christopher


    Eine gewisses Maß an Freundlichkeit kann man auch von Menschen im Internet erwarten.
    Das Forum basiert komplett auf der Freiwilligkeit ihrer Nutzer und diese sollen sich wohlfühlen! Daher seid bitte freundlich. Danke

  • Zitat

    deine primary spalte muss zwingend "_id" benannt sein, ansonsten funktioniert der CursorAdapter nicht

    Kleine Korrektur: man kann seine Felder schon beliebig benennen, denn *der Cursor" muss die Spalte enthalten, nicht die Tabelle.
    Im Beispiel des TE würde "select ID as _id, ort from gesamt" das gewünschte leisten.

Jetzt mitmachen!

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