# Insert in MS SQL Server Db funktioniert nicht richtig



## Gast (31. Mai 2006)

Hallo,

Ich habe folgendes Problem:

Ich mache einen Insert über JDBC zu einer MS SQL Server DB ina Java.
Wenn ich mir jetzt die Datenbanktabelle anschaue sind die Datensätze zwar eingetragen, werden aber nur angezeigt
sobald man auf dem jeweiligen Feld klickt.
Wenn ich den Insert aber nicht in Java programmiere, sondern manuell eingebe, passiert das nicht.

Woran kann das liegen?

Danke im Voraus


----------



## Caffè Latte (31. Mai 2006)

Hi,

wie schaust du dir denn die Datenbanktabelle an? Auch mit dem Javaprogramm, das zuvor die INSERTs abgesetzt hat? Oder mit einer anderen Anwendung?


----------



## Guest (31. Mai 2006)

Hi,

mit einer anderen Anwendung. Sie nennt sich "SQL Server Enterprise Manager"


----------



## Caffè Latte (31. Mai 2006)

Hi,

ich kenne diese Anwendung nicht, aber das ist IMHO auch nicht so wichtig. Läuft die Anwendung parallel zum Javaprogramm? Dann bekommt sie die Änderungen vielleicht nicht oder zu spät mit. Oder tritt das Phänomen auch auf, wenn du zuerst die INSERTs mit Java machst und dann den SQL Server Manager startest? Ändert sich an dem Verhalten was, wenn du explizit ein COMMIT absetzt?


----------



## AlArenal (31. Mai 2006)

Iss doch logisch. Woher soll denn dein Manager merken, dass von irgendwo kommend irgendwer Daten in der DB geändert hat? Wenn du in dem Manager selbst die Daten änderst, ist das Tool natürlich schlau genug das zu merken und mal eben neu einzulesen.


----------



## Guest (31. Mai 2006)

Das problem tretet auch auf wenn ich die Anwendung später starte.
Was meinst du mit commit?


----------



## lhein (31. Mai 2006)

Naja, er hat gesagt, wenn er aufs Feld klickt, kommt der Wert zum Vorschein.
Kann es sein, dass der irgendwie das hintere Ende der Spalte anzeigt? Wenn Du dann draufklickst, geht er an den Anfang und die siehst den Inhalt? Der MSSqlserver füllt varchars bis zur max. länge mit Leerzeichen auf, evtl. ist das ja schon das Problem.

lr


----------



## Guest (31. Mai 2006)

wenn ich draufklicke erscheinen die Einträge zudem verzerrt.

Beispiel: wenn der Eintrag 'Test' ist, erscheint es so in der Datenbank: 'T e s t'


----------



## lhein (31. Mai 2006)

Spalte ist Unicode und du insertest Ascii? oder umgekehrt? Sieht jedenfalls nach eben so einem Problem aus.


----------



## Guest (31. Mai 2006)

hallo,

wenn das so ist, weiß du vielleicht wie ich dieses Problem lösen kann?

Gruß


----------



## lhein (31. Mai 2006)

Zuallererst wäre mal interessant, welchen DB-Treiber du nimmst. ODBC Bridge oder den JDBC von MS.
Dann ist noch interessant, welchen Datentyp die betroffene(n) Spalte(n) haben.
Zuletzt wäre es schön, wenn Du noch den entsprechenden Part des Java-Tools posten könntest, wo Du Daten in die DB einfügst.

Grüße
lr


----------



## Guest (31. Mai 2006)

ja aber wieso funktioniert es wenn ich den gleichen query in die SQL Konsole der Anwendung eingebe?


----------



## lhein (31. Mai 2006)

Anonymous hat gesagt.:
			
		

> ja aber wieso funktioniert es wenn ich den gleichen query in die SQL Konsole der Anwendung eingebe?



Weil der intern weiss, wie er die Datentypen handhaben muss. Beantworte mal die Fragen oben, dann sehen wir hoffentlich wo das Problem liegt.

lr


----------



## Guest (31. Mai 2006)

Die Datentypen stimmen alle, sonst würde ich ja eine Fehlermeldung bekommen.
Alle Spalten sind vom Typ varchar


```
queryEIS = "INSERT INTO EIS (ProductKey,ProductID,ProductNameNew) VALUES("+key+","+id+","+FileCourseData.dataAll[j][1]+")";
```

Kann es sein, dass der Fehler an den Parametern meines Statements:


```
stmtTest = Main_Servlet.connection.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_UPDATABLE);
```


----------



## lhein (31. Mai 2006)

Anonymous hat gesagt.:
			
		

> Die Datentypen stimmen alle, sonst würde ich ja eine Fehlermeldung bekommen.
> Alle Spalten sind vom Typ varchar
> 
> 
> ...




wenn alle von Typ varchar sind, dann fehlen zuallererst mal Anführungszeichen / Hochkommata (siehe oben).
mich wunderts, dass der sql server da nicht meckert.

OPS, hatte varchar mit nchar / char verwechselt, aber probiers trotzdem mal mit Hochkommas.

lr


----------



## Guest (1. Jun 2006)

Ich habe mal ausprobiert statt den statischen Arrays ein String in eine Variable zu speichern und siehe da, die
Werte werden richtig in die DB gespeichert.
Nur wenn ich diesen bestimmten zweidimensionales Array benutze klappt es nicht richtig. Ich habe mir den Wert dieses Arrays ausgeben lassen, aber er hat genau den gleichen Wert wie die Variable, deshalb kann ich mir nicht erklären wieso es bei dem nicht klappt.


----------



## lhein (1. Jun 2006)

Also, nochmals.
Du speicherst die Daten in varchar Spalten als String mit Hochkommata und es funktioniert. Wenn auch das 2d Array Stringwerte enthält und die Spalte in der DB ebenfalls vom Typ varchar ist, dann sollte auch das funktionieren. Ich kann mir max. vorstellen, dass Du in dem Array irgendwelche Objekte speicherst, dann musst Du Dir natürlich im Klaren darüber sein, dass ein


```
....'"+FileCourseData.dataAll[j][1]+"')";
```

implizit die Methode toString() des im Array gespeicherten Objekts aufruft, was evtl. nicht dem entspricht, was du gerne speichern würdest.

lr


----------

