SQLite no such table..

R

Rhododendron

Fortgeschrittenes Mitglied
26
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
 
Moin,

wie sehen denn deine SQLite-Befehle aus? Hast du die korrekte Datenbank vorher ausgewählt?
 
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)
 
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:
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
 

Ähnliche Themen

R
Antworten
6
Aufrufe
996
swa00
swa00
5
Antworten
5
Aufrufe
1.204
jogimuc
J
Justice
Antworten
4
Aufrufe
1.667
Justice
Justice
Zurück
Oben Unten