Oracle NLS_LANG

16/11/2007 - 20:43 von Marcus | Report spam
Hallo zusammen!

Ich entwickle ein Programm, das auf drei verschiedene Oracle Server
zugreift. Die Datenbanken auf diesen Servern sind mit unterschiedlichen
Zeichensàtzen konfiguriert.

Damit die ausgelesenen Texte Clientseitig korrekt angezeigt werden, muss vor
der Initialisierung der Connection die Umgebungsvariable NLS_LANG auf den
entsprechenden Zeichensatz konfiguriert werden.

SetEnvVariable("NLS_LANG", <Zeichensatz>)

Die Umgebungsvariable wird zwar korrekt gesetzt, die Daten werden aber nicht
in dem konfigurierten Zeichensatz zurückgeliefert.

Hat igrendjemand eine Idee wie ich die Verwendung des konfigurierten
Zeichensatzes erzwingen kann?

Hier der komplette Code zum Ausführen der SQL Statements

Try
If m_conConnection Is Nothing Then
m_conConnection = New OleDb.OleDbConnection(m_strConnectionString)
If m_conConnection.State = ConnectionState.Closed Then
m_conConnection.Open()
End If
End If

adpDataAdapter.SelectCommand = New OleDbCommand(SqlString,
conConnection, objTransaction)
adpDataAdapter.Fill(Data, TableName)

Return True

Catch ex As Exception
Throw
Finally
If Not m_conConnection Is Nothing Then
If m_conConnection.State = ConnectionState.Open Then
Try
m_conConnection.Close()
Catch ex As Exception

End Try
End If
m_conConnection.Dispose()
m_conConnection = Nothing
GC.Collect()
End If
End Try

Vielen Dank und Gruß,

Marcus
 

Lesen sie die antworten

#1 Michael v. Fondern
18/11/2007 - 16:35 | Warnen spam
Hallo Marcus,

Damit die ausgelesenen Texte Clientseitig korrekt angezeigt werden, muss vor
der Initialisierung der Connection die Umgebungsvariable NLS_LANG auf den
entsprechenden Zeichensatz konfiguriert werden.

SetEnvVariable("NLS_LANG", <Zeichensatz>)

Die Umgebungsvariable wird zwar korrekt gesetzt, die Daten werden aber nicht
in dem konfigurierten Zeichensatz zurückgeliefert.



Da ich zwar einige Jahre mit Oracle und einige Jahre mit dem
.NET-Framwork gearbeitet haber, aber bislang nocht nicht mit beidem in
Kombination, kann ich nur ein wenig spekulieren.

Hast du mal probiert, nicht die Umgebungsvariable zu verwenden, sondern
die entsprechende Registry-Einstellung zu veràndern?

Siehe z.B. hier
http://www.muniqsoft.de/tipps/monat...upport.htm

Umgebungsvariablen sind immer Prozess-spezifisch, und ich weiss halt
nicht, ob bei der Kommunikation "Dein Programm -> ADO.NET-Adapter ->
Oracle Net-Schicht" evtl. noch ein weiterer Prozess dazwischen liegt,
der evtl. eine andere NLS_LANG-Einstellung hat als der Prozess deines
Programms.

Grüße

- Michael -

Ähnliche fragen