Accéder à une base de données Oracle en C# via ODP.NET

Oracle Data Provider for .NET (ODP.NET) permet d’accéder à vos bases Oracle depuis vos programmes .NET. Oracle fournit également une extension pour Visual Studio appelée Oracle Developer Tools for Visual Studio. Cette extension permet notamment :

  • de créer, modifier et manipuler vos objets Oracle
  • de créer et déboguer votre code PL/SQL
  • de manipuler la CLR inclue dans Oracle Database pour Windows pour développer vos procédures stockées en .NET

Vous trouverez ci-dessous un exemple simple de programme développé en C# via Visual Studio 2010.
Pour commencer :

  • Installez Visual Studio et Oracle Data Access Components for Windows (ODAC)
  • Créez un projet C#
  • Ajoutez la dll Oracle.DataAccess.dll que vous trouverez dans %ORACLE_HOME%ODP.NETbin4 dans les références du projet
  • Créer une entrée dans le fichier tnsnames.ora qui pointe vers votre base de données; pour l’exemple ci-dessous, l’alias se nomme oracle

Ensuite, vous pourrez alors écrire votre code C# ; voici un exemple simple d’utilisation dans un projet en mode Console :

using System;
using Oracle.DataAccess.Client;

namespace ConsoleApplication1 {
class Program {
static void Main(string[] args) {
try {
OracleConnection con;
con = new OracleConnection();
con.ConnectionString =
"User Id=system;Password=manager;Data Source=oracle";
con.Open();

string sql = "select dummy from dual " +
"union all " +
"select 'Y' from dual";

OracleCommand cmd = new OracleCommand(sql, con);
OracleDataReader dr = cmd.ExecuteReader();
while (dr.Read()) {
string x = dr["dummy"].ToString();
Console.WriteLine("Value: " + x);
}
dr.Close();
cmd.Dispose();
con.Close();
}
catch (Exception e) {
Console.WriteLine(e.StackTrace.ToString());
}
}
}
}

Votre projet dans Visual Studio 2010 ressemble alors à ceci :

Générer le code correspondant et exécutez votre programme dans une console Windows en lançant le program Command puis comme ceci :

C:...ConsoleApplication1binRelease>ConsoleApplication1.exe
Value: X
Value: Y

Pour plus d’informations, reportez-vous à :