Budujemy aplikację Java wspieraną przez bazę danych Oracle, do której uzyskujemy dostęp za pomocą JDBC (sterowniki ojdbc6.jar
i orai18n.jar
). Schemat bazy danych przechowuje kolumny tekstowe przede wszystkim przy użyciu typu danych NVARCHAR2
.Czy powinienem używać JDBC getNString() zamiast getString()?
JDBC documentation dla JDBC ResultSet
mówi, że getNString()
przeznaczony jest szczególnie do użytku z nchar, nvarchar itp typów danych, ale w tej chwili używamy tylko getString()
.
To działa dobrze, więc zastanawiam się, dlaczego powinienem użyć getNString()
zamiast getString()
. Czy w przypadku wprowadzenia znaków spoza zestawu ASCII rozpocznie się niepowodzenie, czy też sterownik JDBC Oracle jest obojętny, do jakiej metody powinienem użyć?
EDYCJA: Wydaje się, że może zależeć od bazy danych: SQL Server doesn't seem to mind which you use, w zależności od parametrów połączenia. Czy ktoś ma jakieś konkretne informacje na temat Oracle?
Proponuję dodać ten test do twojego zestawu regresji, na wypadek gdyby zmiany w przyszłych wersjach Oracle lub Java – artbristol
@artbristol - to bardzo dobry pomysł. Nawet zmiana w konfiguracji Oracle może potencjalnie spowodować regresję (chociaż nie mam powodu, aby wierzyć, że oprócz doświadczenia z konfiguracją Oracle) – Gnat