|Oracle® Data Provider for .NET Developer's Guide
10g Release 1 (10.1)
Part Number B10117-01
ODP.NET globalization support enables applications to manipulate culture-sensitive data appropriately. This feature ensures proper string format, date, time, monetary, numeric, sort order, and calendar conventions depending on the Oracle globalization settings.
See Also:"OracleGlobalization Class"
This section includes the following:
OracleGlobalization object can be used to represent the following:
Client globalization settings are derived from the Oracle globalization setting (
NLS_LANG) in the Windows registry of the local computer. The client globalization parameter settings are read-only and remain constant throughout the lifetime of the application. The client globalization settings can be obtained by calling the
OracleGlobalization.GetClientInfo() static method.
The following example retrieves the client globalization setting:
// C# ... // GetClientInfo() is a static method on OracleGlobalization class OracleGlobalization ClientGlob = OracleGlobalization.GetClientInfo();
The properties of the
OracleGlobalization object provide the Oracle globalization value settings.
Session globalization parameters are initially identical to client globalization settings. Unlike client settings, session globalization settings can be updated. However, they can only be obtained after establishing a connection against the database server. The session globalization settings can be obtained by calling
GetSessionInfo() on the
OracleConnection. Invoking this method returns an instance of an
OracleGlobalization object whose properties represent the globalization settings of the session.
OracleConnection object establishes a connection, it implicitly opens a session whose globalization parameters are initialized with those values specified by the client computer's Oracle globalization (or National Language Setting (NLS)) registry settings. The session settings are updatable and can change during its lifetime.
The following example changes the date format setting on the session:
// C# ... OracleConnection con = new OracleConnection("User Id=scott;Password=tiger;"); con.Open(); OracleGlobalization SessionGlob = con.GetSessionInfo(); // SetSessionInfo updates the Session with the new value SessionGlob.DateFormat = "YYYY/MM/DD"; con.SetSessionInfo(SessionGlob); ...
Thread-based globalization parameter settings are specific to each thread. Initially, these settings are identical to the client globalization parameters, but they can be changed as specified by the application. When ODP.NET Types are converted to and from strings, the thread-based globalization parameters are used, if applicable.
Thread-based globalization parameter settings are obtained by invoking the
GetThreadInfo static method of the
OracleGlobalization object. The
SetThreadInfo static method of the
OracleGlobalization object can be called to set the thread's globalization settings.
ODP.NET classes and structures rely solely on the
OracleGlobalization settings when manipulating culture-sensitive data. They do not use .NET thread culture information. If the application uses only .NET types,
OracleGlobalization settings have no effect. However, when conversions are made between ODP.NET types and .NET types,
OracleGlobalization settings are used where applicable.
The following code snippet shows how the thread's globalization settings are used by the ODP.NET Types:
... OracleGlobalization ThreadGlob = OracleGlobalization.GetThreadInfo(); // set and validate the format ThreadGlob.DateFormat = "YYYY-MM-DD"; // set the thread with the new format OracleGlobalization.SetThreadInfo(ThreadGlob); // create a new instance of OracleDate OracleDate date = new OracleDate("2002-01-01"); ...
OracleGlobalization object validates property changes made to it. If an invalid value is used to set a property, an exception is thrown. Note that changes made to the
Language properties change other properties of the
OracleGlobalization object implicitly.
See Also:Oracle Database Globalization Support Guide for more information on the properties affected by
This section lists ODP.NET types and operations that are dependent on or sensitive to globalization settings.
OracleString structure depends on the client computer's
OracleGlobalization settings. The local computer's client character set is used when it converts a Unicode string to a
byte in the
GetNonUnicode method and when it converts a
byte of ANSI characters to Unicode in the
OracleString constructor which accepts a
The thread globalization settings are used by ODP.NET types whenever they are converted to and from .NET string types, where applicable. In most cases, the
ToString method, the
Parse static method, constructors that accept .NET string data, and conversion operators to and from .NET strings use specific thread globalization settings depending on the ODP.NET type used.
For example, the
OracleDate type uses the
DateFormat property of the thread globalization settings when the
ToString method is invoked on it. This returns a
DATE as a string in the format specified by the thread's settings.
For more details, read the remarks in Chapter 5 for the ODP.NET type methods that convert between ODP.NET types and .NET string types, to identify which thread globalization settings are used for that particular method.
Session globalization settings affect any data that is retrieved from or sent to the server as a string.
For example, if a
DATE column is selected with the
TO_CHAR() function applied on it, the
DATE column data will be a string in the date format specified by the
DateFormat of the session globalization settings. Transmitting data in the other direction, the string data that is to be inserted into the
DATE column, must be in the format specified by the
DateFormat property of the session globalization settings.
The session globalization settings also affect data that is retrieved into the
DataSet as a string using Safe Type Mapping. If the type is format-sensitive, the strings are always in the format specified by the session globalization settings.
CHAR data are not affected by session settings since no format is applicable for these types. However, the
NumericCharacters properties can impact the string representation of
NUMBER types, respectively, when they are retrieved as strings from the database server through safe type mapping.
See Also:"OracleDataAdapter Safe Type Mapping"