Oracle Globalization Support in Oracle Data Provider for .NET

Table of Contents

Objective of the Sample Application

Back To Top

This purpose of this sample is to demonstrate Globalization support in Oracle Data Provider for .NET (ODP.NET) to manage culture sensitive data in the database using C# applications.

Overview of the Sample Application

Back To Top

ODP .NET offers faster and reliable access to Oracle Database by using Oracle Native APIs. ODP .NET provides features to access any .NET application. The data access through ODP.NET can be done using a collection of classes contained in Oracle.DataAccess assembly.

Globalization feature enables user to set date format, time, monetary, numeric, calendar conventions, sort order etc. to his choice of language and territory. When a .NET application connects to Oracle database, the session and thread globalization parameters are initialized with the values specified by the client computer’s Oracle globalization (or National Language Setting (NLS)) registry settings. These NLS parameters can be modified for the current thread and session through OracleGlobalization class and will remain in effect only for that thread or session with the database. The client's registry setting cannot be changed through OracleGlobalization class.

The String type uses current thread's culture settings to represent the data while the default .NET types use client computer's globalization registry settings. Therefore the column data retrieved from database should be converted to String types so that current thread's globaliation settings take effect. Safe Type Mapping is used for columns of corruptible types( Varchar2, Date, Number) so that they are converted to String type instead of their default .NET types when data is retrieved from the database. If the data is retrieved as a string from database itself (for example using TO_CHAR function in SELECT statement), session's culture settings are used to convert the data appropriately.

This sample demonstrates modifying NLS settings for the thread and session when retrieving and updating data to the database. When this C# application is run it shows a list of products from the database. The user can view the details like name, description, price and last modification date of a particular product . The user also has option to modify the details of the product. The user can change the NLS parameters for the thread and session at the design time so that product details are viewed and updated using these settings.


 

User Notes with Screen Shots

Back To Top
  1. The sample at the start up shows a list of products from database as shown in Figure 1.2 

                  Figure 1.2 
  2. The user can select a product and click "Edit Product Details" button to view the details of product from database as shown in Figure 1.3 . The Price column uses globalization settings modified on session while all other columns use globalization settings modified on thread.

                     Figure 1.3
  3. The user can modify the details and click "Update" button to update the changes to database.

    NOTE: This sample by default supports english character set fonts for english, german, french etc languages. To test this sample with some other language characterset like Arabic, hindi, japanese the user can install the font and then change the propery for description textbox.

Required Software 

Back To Top
  • Visual C# installed with MS Development Environment 7.0 version (MS Visual Studio .NET)  including MS .NET Framework 1.0 version

  • Oracle8i Database or later running SQL*Net TCP/IP listener (can be downloaded here)

  • Oracle Data Provider for .NET (ODP.NET) (can be downloaded here)

Extracting the Sample

Back To Top

Unzip Globalization.zip using Winzip or command utility to your convenient directory. Extraction of the zip file results  in the creation of Globalization directory. 

Database Setup 

Back To Top

Connect to your database as any user and run the script Globalization\Setup\DatabaseSetup.sql at the SQL prompt.

@<Extract_Dir>\Globalization\Setup\DatabaseSetup.sql

where <Extract_Dir> is the directory where you have extracted the sample.

The script creates a user "OraNet" with password "OraNet".

It creates a PRODUCTS table as below and populates it with initial data.

Column Name Column Type
PRODUCT_ID NUMBER(5)
PRODUCT_NAME VARCHAR2(200)
PRODUCT_DESC NVARCHAR2(1000)
CATEGORY VARCHAR2(100)
PRICE NUMBER(15,8)
PRODUCT_STATUS VARCHAR2(30)
WEIGHT NUMBER(37,32)
MODIFICATION_DATE DATE

 

Preparing and Running the Sample

Back To Top
  1. Ensure that the Database setup has been completed. 

  2. Open Globalization.sln using Visual Studio .NET from <Extract_Dir>\Globalization folder.

  3. Edit Config.cs file to change the database connection parameters i.e.TNSName for database you want to use . You can also change NLS parameters to your choice. The default settings in Config.cs are language="AMERICA" and territory="AMERICAN". Users can try
    different settings as below. For example,

    //public static string language="AMERICA";   // NLS Language 
    //public static string territory="AMERICAN"; // NLS Territory

    //public static string language="JAPANESE"; // NLS Language
    //public static string territory="JAPAN"; // NLS Territory

    public static string language="FRENCH"; // NLS Language
    public static string territory="FRANCE"; // NLS Territory

    Save this file.

  4. Ensure that the following .NET Component References have been added to Globalization project:

    • System
    • System.Data
    • System.Drawing
    • System.Windows.Forms
    • System.XML
    • Oracle.DataAccess.

    To add the above .NET Components 
    • a)Go to Menu ->View-> Solution Explorer.
    • b)Right click on Globalization project, choose 'Add Reference'.
    • c)Choose the above .NET Components from the list displayed.
    • d)Click 'Select', then OK.
    • e) The chosen .NET component gets added to the project. 

  5. Build and run the sample.

Description of Sample Files 

Back To Top
Directory File Name Description
Globalization\doc Readme.html This file
blaf.css This is a cascading stylesheet applied to Readme.html
Globalization\doc\images This folder contains images used in the Readme.html file
Globalization\src\ Config.cs This C# file contains parameters for database connection and NLS settings.
ConnectionManager.cs This C# file manages the database connection used by sample.
Products.cs This C# file contains source code to display all the products from the database and set globalization parameters for thread and session.
ProductDetails.cs This C# file contains source code to view and update product details to the database.
Globalization.csproj C# project file
Globalization.csproj.user Visual Studio Project User Options (this file gets automatically generated when a Visual Studio Project is created)
Products.resx .NET XML Resource Template (this file gets automatically generated when a Visual Studio Project is created)
ProductDetails.resx .NET XML Resource Template (this file gets automatically generated when a Visual Studio Project is created)
Globalization.sln Visual Studio Solution
Globalization\Setup DatabaseSetup.sql This is a SQL script file 

Please enter your comments on this sample in OTN Sample Code Discussion Forum.