| 

.NET C# Java Javascript Exception

3
Ich warte eine VB.NET-Anwendung, die über C/C++-dll's welche Embedded SQL verwenden, auf eine Oracle 10g Datenbank zugreift. In meiner Standard-Entwicklungsumgebung sind die dll's gegen den Oracle 9i Client kompiliert und ich verwende Visual Studio 2008 und die 9er C/C++-Runtime. Ich bin jetzt dabei, mir eine zweite Entwicklungsumgebung auf meinem Laptop einzurichten. Da ich auf dem Laptop nur Visual Studio 2010, die 10er C/C++-Runtime und den Oracle 10g Client installiert habe, habe ich zunächst den C-Teil der Anwendung für die neue Umgebung angepasst. Oracle 10g hatte ich bereits für eine andere Anwendung installiert.

Prinzipiell läuft die Anwendung. Ich habe jedoch Probleme mit der Interpretation von Datumswerten. In der Anwendung (sie ist ca. 10 Jahre alt und müsste eigentlich neu geschrieben werden) werden Datumswerte als char[]-Arrays an den C-Teil übergeben. Diese sind immer im Format "DD.MM.YYYY" formatiert. Wenn ich ein Update auf eine Datumsspalte machen möchte, liefert Oracle die Fehlermeldung "1843 - Invalid month". Dies liegt wohl daran, dass als Defaultwert für Datumskonvertierungen der abgekürtzte Monatsname definiert ist (wenn ich "01-Jan-2012" anstelle von "01.01.2012" übergebe, wird der Update klaglos durchgeführt).

Ich habe mir die Konfiguration von Oracle im Enterprise-Manager angesehen und festgestellt, dass NLS-Language und NLS-Territory auf AMERICA stehen. Ich habe mit den NLS-Parametern NLS_LANGUAGE, NLS_TERRITORY und NLS_DATE_FORMAT herumprobiert und diese auf Deutsch und deutsche Datumsformat umgestellt, da die Oracle-Dokumentation sagt, dass diese Einstellungen von TO_DATE und TO_CHAR verwendet werden, aber leider ohne Erfolg.

Wenn ich versuche, ein Update-Statement direkt in TOAD abzusetzen, habe ich das gleiche Problem. Meine andere Anwendung (sie greift auf das selbe Schema zu) macht keine Probleme. Sie verwendet jedoch ADO.NET/NHibernate und den alten Microsoft Provider für Oracle.

Vielen Dank im Voraus für eure Hilfe

Klaus
News:
20.11.2011
luedi 2,0k 1 9
1 Antwort
0
Hallo Klaus,

was passiert denn, wenn du erstmal das Datumsformat festlegst?

=> alter session set nls_date_format='DD.MM.YYYY HH24:MI:SS'

Im Anschluss kannst du mit TO_CHAR arbeiten wie gewohnt.

Hope it helps,

Maurice
20.11.2011

Stelle deine .net-Frage jetzt!