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

SQLite no such table..

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von Rhododendron, 20.09.2011.

  1. Rhododendron, 20.09.2011 #1
    Rhododendron

    Rhododendron Threadstarter Erfahrener Benutzer

    Beiträge:
    238
    Erhaltene Danke:
    25
    Registriert seit:
    11.04.2011
    Moin moin,

    Bin gerade dabei eine eigene kleine App zu basteln (Backup-App).
    Generell gehts mir mal darum ein bisschen das App-Basteln zu verstehen.
    Das mit Views und so Anzeige-Quatsch klappt auch schon ganz gut.
    Für das Backup würd ich jetzt aber gern Kontakte, Telefonate, etc. sichern.
    Die Datei dazu liegt ja in /data/data/com.android.providers.contacts/databases/contacts2.db
    Im SQLite Database Browser sieht das auch gut aus.

    Um die Datei dann auch aufm Emulator zu haben, hab ich sie in "assets" importiert und speicher sie dann in /data/data/com.meineapp.bla/databases/
    Sobald ich die App dann starte kommt im LogCat folgender Fehler:
    Code:
    ERROR/ERROR(333): ERROR IN CODE: android.database.sqlite.SQLiteException: no such table: calls: , while compiling: SELECT _id, number, name FROM calls ORDER BY name ASC
    
    Ehrlich gesagt versteh ich den Fehler nich ganz. Im SQLite DB Browser is die Tabelle vorhanden.
    Und lege ich selbst eine Datenbank-Datei an und führe die App damit aus, klappt alles perfekt.
    Wo liegt da also der Fehler?
    Hab ehrlich gesagt keine Ahnung mehr und nach 2 Tagen Stress damit, auch wenig Lust :D
    Hoffe jemand hat ne Lösung

    gute Nacht,
    Rhod
     
  2. Fonsi, 20.09.2011 #2
    Fonsi

    Fonsi Erfahrener Benutzer

    Beiträge:
    178
    Erhaltene Danke:
    15
    Registriert seit:
    08.07.2011
    Moin,

    wie sehen denn deine SQLite-Befehle aus? Hast du die korrekte Datenbank vorher ausgewählt?
     
  3. sixi, 20.09.2011 #3
    sixi

    sixi Erfahrener Benutzer

    Beiträge:
    237
    Erhaltene Danke:
    64
    Registriert seit:
    20.01.2009
    schau mal hier, dort wird beschrieben wie man eine "eigene" Datenbank aus den Resources kopiert. - wenn ich das Problem so richtig verstanden hab :)

    Tipp: wenn die Datenbank zu groß ist (>1MB) meckert Android, dass du nur komprimierte Ressourcen über 1MB nehmen darfst. Dann packste die DB einfach in den "raw" Ordner und änderst die Dateinamen-Erweiterung der Datenbank in ein komprimiertes Format (z.b. .jet)
     
  4. Rhododendron, 20.09.2011 #4
    Rhododendron

    Rhododendron Threadstarter Erfahrener Benutzer

    Beiträge:
    238
    Erhaltene Danke:
    25
    Registriert seit:
    11.04.2011
    Danke für den Link, aber den kannte ich schon.
    Mein Helper sieht inhaltlich genauso aus wie in dem Link.
    Aufgerufen wird er von meiner Activity dann folgendermaßen:
    Code:
    try {
                super.onCreate(savedInstanceState);
                setContentView(R.layout.main_contact);
                ListView myListView = (ListView) findViewById(R.id.myListView);
                dbContactHelper = new ContactHelper(this);
                dbContactHelper.openDataBase();
                ourCursor = dbContactHelper.getCursor();
                startManagingCursor(ourCursor);
                adapter = new ContactAdapter(ourCursor);
                myListView.setAdapter(adapter);
            } catch (Exception e) {
                Log.e("ERROR", "ERROR IN CODE: " + e.toString());
                e.printStackTrace();
            }
    Komischerweise bekomme ich grad auf meinem anderen PC keinen Error, aber angezeigt wird auch nichts :confused:

    Die Datenbank hab ich korrekt ausgewählt (wird auch im DDMS unter "File Explorer" an der richtigen Stelle angezeigt)

    Edit:
    hab gerade nochmal den Code in ein neues Projekt kopiert und bekomm jetzt folgenden Fehler:
    Code:
    ERROR/Database(358): sqlite3_open_v2("/data/data/com.example.contact/databases/contacts2.db", &handle, 2, NULL) failed
    
     
    Zuletzt bearbeitet: 20.09.2011
  5. Rhododendron, 21.09.2011 #5
    Rhododendron

    Rhododendron Threadstarter Erfahrener Benutzer

    Beiträge:
    238
    Erhaltene Danke:
    25
    Registriert seit:
    11.04.2011
    Oh man, es kann so einfach sein :D
    Kam gar nicht auf die Idee, dass es dafür extra eine Klasse gibt :blushing:
    Somit erübrigt sich die Frage mit den Datenbanken.

    Code:
    import android.provider.ContactsContract;
    und ca. 10 Zeilen Code lösen das Ganze umständliche DB-Zeug.

    Jetzt hab ich nur leider ein Problem, dass ich auf der SD-Karte nichts via mount mounten darf und somit auch kein inkrementelles Backup machen kann :(
    Bliebe nur die Lösung vorher eine Partition zu erstellen (wie für A2SD, aber das ist auch nicht so ideal...)

    Aber danke schonmal für eure Hilfe
     

Diese Seite empfehlen