# Insert in Datenbank



## SammY (20. Dez 2006)

Hi Leute,

hab wieder mal ein kleines Problem. 
Ich habe eine SQLite Datenbank. In diese werden 1000 Datensätze eingefügt.
Ist es möglich, durch einen Rückgabewert oder so, zu prüfen ob der Datensatz erfolgreich eingefügt wurde??

Danke schon mal im voraus.  

Gruß SammY


----------



## The_S (20. Dez 2006)

http://java.sun.com/j2se/1.5.0/docs/api/java/sql/PreparedStatement.html#executeUpdate()

Wenn ein Fehler auftat wird eine Exception geworfen.


----------



## Guest (20. Dez 2006)

Ich bekomm da immer folgende Exception:


```
java.sql.SQLException: not supported by PreparedStatment
```


----------



## The_S (20. Dez 2006)

Wie schaut denn deine Abfrage aus?


----------



## Guest (20. Dez 2006)

```
String sql = " insert into logbook_genius_temp values ("+lbEntry.entryCode+", '"+lbEntry.param1+"', '"+lbEntry.param2+"', '"+lbEntry.param3+"', '"+lbEntry.param4+"', '"+datum+"');";
stmt = conn.prepareStatement(sql);
flag = stmt.executeUpdate(sql);
```


----------



## The_S (20. Dez 2006)

Und in einem DB Manager funktioniert die Abfrage so?


----------



## Gast (20. Dez 2006)

Jap es ging schon mal.
Da machte ich es mit Statement anstatt mit PreparedStatement.

und anstatt conn.prepareStatement(sql) mit
conn.createStatement.

Aber da schaffte ich es nicht abzufragen ob der Datensatz erfolgreich geschrieben wurde.


----------



## The_S (20. Dez 2006)

Statement wirft ebenfalls eine Exception wenn deine Abfrage einen Fehler verursacht hat


----------



## Gast (20. Dez 2006)

Ich bekomm aber keine.
Wenn ich nach dem schreiben prüfe, fehlen immer ein bis zwei Datensätze.


----------



## The_S (20. Dez 2006)

Dann liegt der Fehler aber in der Datenbank und nicht an der Java-Schnittstelle.


----------



## Gast (20. Dez 2006)

Ich benutze SQLite


----------



## bronks (20. Dez 2006)

Gast hat gesagt.:
			
		

> Ich bekomm aber keine.
> Wenn ich nach dem schreiben prüfe, fehlen immer ein bis zwei Datensätze.


Du verwendest in Deinem Code das PreparedStatement falsch bzw. Du willst sicher ein einfaches Statement verwenden?


----------



## SammY (21. Dez 2006)

Das hatte ich eh vorher so.
Hab  ich aber eh schon vorher geschrieben.

Aber da gehts nicht das ich prüfen kann ob der Datensatz erfolgreich geschrieben wurde.


----------



## Caffè Latte (21. Dez 2006)

Hi,

sollte das INSERT nicht gehen, meckert das Datenbanksystem. Das merkst du dann anhand einer Exception. Sagt die Datenbank nichts und das INSERT wird nicht oder nicht richtig ausgeführt liegt der Fehler bei dir.

Lass dir doch einfach das SQL-Statement ausgeben, kopiere es in deinen DB-Manager und schau ob es so geht.


----------



## SammY (22. Dez 2006)

Das Problem dabei ist, dass ich 1000 einträge in ner schleife in die DB schreiben lasse. Dann müsste ich ja die 1000 per hand hinein kopieren und das würde dauern.


----------



## Caffè Latte (22. Dez 2006)

Hi,

für das Debuggen würde ich nicht mit 1000 Datensätzen beginnen sondern mit 10. Wenn das dann soweit läuft kann man an die 1000 gehen. Dazu würde es reichen nur die SQL-Statements (auf der Konsole) ausgeben zu lassen und nur visuell zu prüfen. Meist sieht man dann schon Unregelmäßigkeiten.

Und wenn du schon so viele Inserts machst würde ich wieder  Prepared Statements nutzen. Dann aber richtig und das SQL-Statement nicht durch String-Operationen zusammenbasteln sondern "echte Parameter" zu nutzen.

Ich kenne jetzt deine Umgebung nicht. Aber jede bessere IDE hat einen Debug-Modus. Wenn du Pech hast und den Fehler sonst nicht findest, musst du in diesem Modus eben in allen 1000 Schleifendurchläufe die Variablenwerte prüfen.


----------

