Soll ich mich mit JDBC getNString() anstelle von getString()?
Bauen wir eine Java-Anwendung, unterstützt durch eine Oracle-Datenbank wir zugreifen mit JDBC (Treiber ojdbc6.jar
und orai18n.jar
). Das Datenbankschema speichert text-Spalten hauptsächlich über die NVARCHAR2
Daten geben.
Den JDBC-Dokumentation für die JDBC - ResultSet
sagt, dass getNString()
ist besonders für die Verwendung mit NCHAR -, NVARCHAR-etc. Daten-Typen, aber im moment sind wir nur mit getString()
.
Dieser scheint gut zu funktionieren, so Frage ich mich, warum sollte ich verwenden getNString()
eher als getString()
. Ist getString()
werde scheitern, wenn nicht-ASCII-Zeichen eingegeben werden, oder ist das Oracle-JDBC-Treiber gleichgültig, welche Methode sollte ich verwenden?
EDIT: Scheint, dass es die Datenbank-abhängig: SQL Server scheint nicht in den Sinn, die Sie verwenden, abhängig von der Verbindungs-Parameter. Hat jemand irgendwelche spezifische Informationen zu Oracle?
InformationsquelleAutor Gnat | 2011-05-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich einen test auf unsere Anwendung, und es scheint, dass
getNString()
unnötig mit Java 6, JDBC 6, Oracle-JDBC-6-Treiber und Oracle 11.1.0.6.0. Der test-string den ich verwendet wurde, war "Δ, Й, ś, م, ๗, あ, 叶, 葉, und 말", kopiert aus http://en.wikipedia.org/wiki/Unicode.Meisten unserer Daten Zugriff erfolgt über gespeicherte Prozeduren. Java war in der Lage, festlegen und abrufen der oben genannten test-string korrekt über
setObject()
undgetString()
(nichtsetString()
für Abstraktion Gründen), sammeln von Daten von der Schnittstelle und schreiben Sie es zurück zu der Schnittstelle, wie erwartet.Daher
getString()
funktioniert ok für Unicode-Daten mit Oracle 11g (wie SQL Server, wie im obigen link) so werden wir auch weiterhin diese eher alsgetNString()
.das ist eine sehr gute Idee. Auch eine änderung in der Oracle-Konfiguration möglicherweise zu einer regression (obwohl ich habe keinen Grund zu glauben, dass es außer Erfahrung mit Oracle-Konfiguration)
InformationsquelleAutor Gnat
Wenn Ihr DB verwendet die
NVARCHAR2
Datentyp zugeordnet werden, es ist entworfen, um die Speicherung von mehrsprachigen Daten. Ihr Programm unterbrochen werden, wenn unicode-Daten gespeichert werden, in diesen Spalten. Wenn ich du wäre, würde ich bewegen, um diegetNXXX()
MethodenInformationsquelleAutor qwerty