# SQLite-Datenbank Probleme



## undertaker (19. Jun 2012)

Hallo zusammen,

ich habe eine SQLite Datenbank mit der Tabelle "test". Diese hat zwei Spalten, "feld1" und "feld2". Ich möchte jetzt die Tabelle mit insert füllen und will das folgendermaßen machen:


```
SQLiteDatabase db = SQLiteDatabase.openDatabase(path, null, SQLiteDatabase.OPEN_READWRITE);
ContentValues cw = new ContentValues();
cw.put("feld1", 2);
cw.put("feld2", 25);

long id = db.insert("test", null, cw);
```

Die "id" ist nach Ausführung immer -1, was bedeutet, dass es nicht geklappt hat. Kann mir jemand sagen wo das Problem liegt? komme einfach nicht drauf... Danke schonmal 

Edit: Außerdem sagt LogCat mir, dass es die Tabelle "test" nicht gibt, was aber nicht stimmt.


----------



## diel2001 (19. Jun 2012)

Groß- und kleinschreibung beachtet?


----------



## Bolle52 (19. Jun 2012)

undertaker hat gesagt.:


> Hallo zusammen,
> 
> ich habe eine SQLite Datenbank mit der Tabelle "test". Diese hat zwei Spalten, "feld1" und "feld2". Ich möchte jetzt die Tabelle mit insert füllen und will das folgendermaßen machen:
> 
> ...



Benutz mal anstatt der insert Methode die insertOrThrow methode, fang die Exception ab und poste die Exception mal.


----------



## undertaker (19. Jun 2012)

@diel2001:

Ja, hab schon mehrmals überprüft ob alles richtig geschrieben ist.

@Bolle52:

Also ich bekomme das hier: 


> 06-19 13:06:06.449: I/SqliteDatabaseCpp(29331): sqlite returned: error code = 1, msg = no such table: test, db=/data/data/packagename/databases/locdb.sqlite



und als Exception die hier:


> 06-19 13:07:07.129: W/System.err(29331): android.database.sqlite.SQLiteException: no such table: test: , while compiling: INSERT INTO text(feld1,feld2) VALUES (?,?)




Liegt der Fehler vielleicht daran, dass ich die Tabelle manuell mit einem SQLite-Database-Viewer erstellt habe und die neue DB nicht auf das Tablett kopiert wird? Ich kann z.B. von der gleichen DB aber von anderen Tabellen wunderbar SELECT's ausführen


----------



## Bolle52 (19. Jun 2012)

Den Grund, warum kein Insert gemacht werden kann, haben wir jetzt gefunden  

Die Frage kann ich dir nicht beantworten warum die Tabelle nicht vorhanden ist, da ich deinen deploymentprozess nicht kenne. 

Was spricht denn dagegen die Tabelle von deiner App selbst anlegen zu lassen?


----------



## HoaX (19. Jun 2012)

Bist du denn an SQLite gebunden? Es gibt so viele schöne in purem Java geschriebene SQL-Datenbanken... h2, hsqldb, derby,... dann lerst du auch gleich JDBC und nicht sowas proprietäres.


----------



## Bolle52 (19. Jun 2012)

HoaX hat gesagt.:


> Bist du denn an SQLite gebunden? Es gibt so viele schöne in purem Java geschriebene SQL-Datenbanken... h2, hsqldb, derby,... dann lerst du auch gleich JDBC und nicht sowas proprietäres.



Mit Android ist er an SQLite gebunden, sofern die App eine embeddedDatabase verwenden soll.


----------



## HoaX (20. Jun 2012)

Bolle52 hat gesagt.:


> Mit Android ist er an SQLite gebunden, sofern die App eine embeddedDatabase verwenden soll.



Oh, hatte garnicht gemerkt dass hier "Mobile Geräte" ist... O


----------



## undertaker (20. Jun 2012)

Okay also der Fehler lag daran, dass das Android-Projekt schon stand und ich einen kleinen Parser integrieren musste der in eine Tabelle schreibt, die mein Vorgänger noch nicht angelegt hatte. Er hat den Code anscheinend so aufgebaut, dass die Datenbank nur einmal aufs Tablett kopiert wird. Wenn ich die App auf dem Tablett deinstalliere und wieder drauflade ist auch die neue Datenbank mit meiner Tabelle vorhanden. Klar hätte man die Tabelle auch von der App selbst anlegen lassen können, aber irgendwie wollte ich doch wissen warum das nicht geklappt hat  Hoffe mal das ich das so richtig verstanden habe und das Problem nicht doch irgendwo anders liegt aber aufjedenfall klappts jetzt. Danke für alle Antworten


----------

