# INSERT-STATEMENT



## Guest (5. Okt 2008)

Hallo!

Ich habe eine Tabelle mit zwei Feldern vom Typ "Text" (Len:<leer>, Collation:latin1_swedish_ci" und arbeite mit einer mysql-Datenbank, möchte aber auch, diese Tabelle dann in Oracle verwenden können. 
Mein Problem ist jetzt eigentli das essentielle Insert-Statement. Habe einen String, der Enter, Hochkomma (einfach, doppelt), Prozentzeichen, etc und etliche andere Sonderzeichen enthält und möchte diesen nun via Java einfügen. 

Hab das ganze jetzt mit einem PreparedStatement versucht, da ich gelesen habe, dass ich da dann nicht auf die Escape Character aufpassen muss (z.B. ", ', ...). 

PreparedStatement stmt = conn.prepareStatement("INSERT INTO tabMyTable (value1, value2) VALUES (?,?)");

stmt.setString(1, myString), stmt.setObject(1, myString), stmtsetCharacterStream(1, new StringReader(myString), myString.length()), etc. hab ich alles schon versucht und danach eben executeUpdate()... aber ich kriege jedes mal wieder einen Error. Hat vielleicht jemand schon einmal ein ähnliches Problem gehabt oder eine Idee, wie ich nun in das Feld vom Typ "Text" meinen megalangen String mit vielen Sonderzeichen, Entern, etc. inserten kann? 

Danke für eure Hilfe!


----------



## musiKk (6. Okt 2008)

Was für ein Error? Eventuell Code zeigen. Was ist "megalang"? Wird ein CLOB benötigt?


----------



## Guest (6. Okt 2008)

Kein aussagekräftiger Error... also nur Error, dass Statement nicht ausgeführt werden konnte. Ich caste ein DOM-Objekt in einen String. Hab das ganze vorher in ein File geschrieben, möchte es aber jetzt in die DB einspeisen. Das File hat 281KB. Könnte es denn daran liegen, dass der String zu lang ist? Aber da müsste er diesen doch einfach abschneiden oder nicht?


----------



## musiKk (6. Okt 2008)

Das ist in der Tat zu lang. Ob der String abgeschnitten wird, wenn er die Maximallänge überschreitet, weiß ich nicht, aber da ein VARCHAR n auf n Zeichen gekürzt wird, sollte das eigentlich der Fall sein.
Probier sonst mal ein CLOB.


----------



## Guest (6. Okt 2008)

In mysql gibt es den Typ Clob nicht, hab aber jetzt sicherheitshalber noch auf LongText umgestellt, wobei der Typ Text für einen Clob reichen sollte, was ich so gelesen hab. Es geht auf alle Fälle immer noch nicht. Könnte es wirkli an den ganzen Sonderzeichen bzw. Escape Characters liegen? Hab mir aber gedacht, dass ich das durch das PreparedStatement umgehen kann.
Bin schon verzweifelt.


----------



## Gast (6. Okt 2008)

In mysql gibt es den Typ Clob nicht, hab aber jetzt sicherheitshalber noch auf LongText umgestellt, wobei der Typ Text für einen Clob reichen sollte, was ich so gelesen hab. Es geht auf alle Fälle immer noch nicht. Könnte es wirkli an den ganzen Sonderzeichen bzw. Escape Characters liegen? Hab mir aber gedacht, dass ich das durch das PreparedStatement umgehen kann.
Bin schon verzweifelt.


----------



## musiKk (6. Okt 2008)

Stimmt, MySQL hat keine CLOBs, das wird wohl dem TEXT entsprechen. Die Sonderzeichen sollten bei einem PreparedStatement in der Tat vom Treiber übernommen und entsprechend übersetzt werden, dass die Datenbank damit auch keine Probleme hat. Da du den Fehler nicht genauer mitteilen willst, fällt mir zumindest jetzt nichts weiter ein. Vielleicht weiß noch jemand anderes etwas.


----------

