<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>social hortis &#187; C#</title>
	<atom:link href="http://social.hortis.ch/category/c/feed/" rel="self" type="application/rss+xml" />
	<link>http://social.hortis.ch</link>
	<description>De l'agilité à la performance</description>
	<lastBuildDate>Tue, 27 Jul 2010 09:24:44 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Accéder aux sources Java depuis son IDE</title>
		<link>http://social.hortis.ch/2006/08/25/acceder-aux-sources-java-depuis-son-ide/</link>
		<comments>http://social.hortis.ch/2006/08/25/acceder-aux-sources-java-depuis-son-ide/#comments</comments>
		<pubDate>Fri, 25 Aug 2006 07:01:31 +0000</pubDate>
		<dc:creator>usergone</dc:creator>
				<category><![CDATA[C#]]></category>
		<category><![CDATA[java]]></category>
		<category><![CDATA[open-source]]></category>

		<guid isPermaLink="false">http://social.hortis.ch/2006/08/25/acceder-aux-sources-java-depuis-son-ide/</guid>
		<description><![CDATA[J&#8217;utilise depuis quelques temps les plugins Eclipse de 2 produits permettant de rechercher dans les sources Java des projets Open Source et dans les Javadoc.
- World Of Java : le plugin existe pour Eclipse, Netbeans et depuis peu pour IntelliJIDea. Quelques screenshots > . Ce plugin existe en peut etre utilisé gratuitement pour usage personnel [...]]]></description>
			<content:encoded><![CDATA[<p>J&#8217;utilise depuis quelques temps les plugins Eclipse de 2 produits permettant de rechercher dans les sources Java des projets Open Source et dans les Javadoc.</p>
<p>- <a href="http://www.worldofjava.org/homepage.do">World Of Java</a> : le plugin existe pour <a href="http://www.eclipse.org">Eclipse</a>, <a href="http://www.netbeans.org/">Netbeans</a> et depuis peu pour <a href="http://www.jetbrains.com/idea/">IntelliJIDea</a>. Quelques screenshots << <a href="http://www.worldofjava.org/demo.do">ici</a> >> . Ce plugin existe en peut etre utilisé gratuitement pour usage personnel (Edition personnelle) ou pour développer sur un projet open source (Edition communauté). Pour toute application commerciale, il faut payer.<br />
- <a href="http://www.koders.com/">Koders</a>   : Permet de faire des recherches non seulement sur des sources Java mais aussi pour d&#8217;autres langages (C, C++, C#, Ruby, Python, &#8230;). Il a l&#8217;avantage d&#8217;être complètement gratuit. Existe sous la forme d&#8217;un plugin Eclipse et d&#8217;une extension pour Visual Studio.</p>
<p>Personnellement, j&#8217;utilise beaucoup plus Koders que WOJ.</p>
<p>A vous de tester maintenant.</p>
]]></content:encoded>
			<wfw:commentRss>http://social.hortis.ch/2006/08/25/acceder-aux-sources-java-depuis-son-ide/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Developpement .NET : Persistence avec NHibernate</title>
		<link>http://social.hortis.ch/2006/07/21/developpement-net-persistence-avec-nhibernate/</link>
		<comments>http://social.hortis.ch/2006/07/21/developpement-net-persistence-avec-nhibernate/#comments</comments>
		<pubDate>Fri, 21 Jul 2006 12:29:17 +0000</pubDate>
		<dc:creator>usergone</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>
		<category><![CDATA[open-source]]></category>

		<guid isPermaLink="false">http://social.hortis.ch/2006/07/21/developpement-net-persistence-avec-nhibernate/</guid>
		<description><![CDATA[Dans un précédent article nous avons vu comment se connecter a une base Oracle XE avec C# et effectuer des requetes.
Nous allons maintenant voir, en s&#8217;appuyant sur le framework NHibernate (portage C# de Hibernate pour Java) , comment persister nos objets en base.
 Cet article se focalise sur NHibernate, mais pour montrer que nous pouvons [...]]]></description>
			<content:encoded><![CDATA[<p>Dans un précédent article nous avons vu comment se connecter a une base Oracle XE avec C# et effectuer des requetes.</p>
<p>Nous allons maintenant voir, en s&#8217;appuyant sur le framework NHibernate (portage C# de Hibernate pour Java) , comment persister nos objets en base.</p>
<p><span id="more-241"></span> Cet article se focalise sur NHibernate, mais pour montrer que nous pouvons developper en C# de facon identique a ce que l&#8217;on fait avec Java, on utilisera :</p>
<p><a href="http://nant.sourceforge.net/">NAnt </a>pour la compilation (portage C# de Ant)</p>
<p><a href="http://www.nunit.org/">NUnit </a>pour les tests unitaires (portage C# de JUnit)</p>
<p><strong>Avant de commencer</strong></p>
<p>Il vous faudra downloader une copie de NHibernate. Téléchargez la <a href="http://sourceforge.net/project/showfiles.php?group_id=73818">dernière version</a> sur Sourceforge, et dézippez le contenu dans un dossier.</p>
<p><strong> Cycle de développement</strong></p>
<ul>
<li>Créer la table qui servira à persister la classe .NET.</li>
<li>Créer une classe .NET devant être persistée.</li>
<li>Créer un fichier de mapping afin que NHibernate sache comment persister la classe .NET</li>
<li>Créer un fichier de configuration afin que NHibernate sache comment se connecter a la base de données.</li>
<li>Utiliser l&#8217;API NHibernate.</li>
</ul>
<p><strong>Ecrire le SQL</strong></p>
<p>Je réutilise la base Oracle XE de mon precedent article, ainsi que la même table worldcup_results.</p>
<p><img src="http://social.hortis.ch/wp-content/uploads/2006/07/tab.png" /></p>
<p><strong>Créer la classe .NET:</strong></p>
<p>Une simple classe qui peut être persistée au moyen de NHibernate:</p>
<p>using System;<br />
using System.Security;<br />
using System.Security.Permissions;<br />
using System.Reflection;</p>
<p>namespace NHibernateQuickStart<br />
{<br />
///<br />
/// Description of Class1.<br />
///<br />
public class WorldcupResults<br />
{<br />
private string team;<br />
private int played;<br />
private int wins;<br />
private int draws;<br />
private int losses;<br />
private int goalsFor;<br />
private int goalsAgainst;</p>
<p>public WorldcupResults()<br />
{<br />
}</p>
<p>public WorldcupResults(string team, int played, int wins, int draws, int losses, int goalsFor, int goalsAgainst) {<br />
this.Team = team;<br />
this.Played = played;<br />
this.Wins = wins;<br />
this.Draws = draws;<br />
this.Losses = losses;<br />
this.GoalsFor = goalsFor;<br />
this.GoalsAgainst = goalsAgainst;<br />
}</p>
<p>public  string Team {<br />
get{return team;}<br />
set{team = value;}<br />
}</p>
<p>public int Played {<br />
get{return played;}<br />
set{played = value;}<br />
}</p>
<p>public int Wins {<br />
get{return wins;}<br />
set{wins = value;}<br />
}</p>
<p>public int Draws {<br />
get{return draws;}<br />
set{draws = value;}<br />
}</p>
<p>public int Losses {<br />
get{return losses;}<br />
set{losses = value;}<br />
}</p>
<p>public int GoalsFor {<br />
get{return goalsFor;}<br />
set{goalsFor = value;}<br />
}</p>
<p>public int GoalsAgainst {<br />
get{return goalsAgainst;}<br />
set{goalsAgainst = value;}<br />
}<br />
}<br />
}</p>
<p><strong>Ecrire le fichier de mapping:</strong></p>
<p>Maintenant que nous avons la table et la classe .NET, on va effectuer le mapping. La facon la plus propre et la plus maintenable est d&#8217;écrire un fichier de mappign par classe nommé <tt>YourObject.hbm.xml</tt> et localisé dans le même répertoire que la classe. Voila l&#8217;exemple pour WorldcupResults.hbm.xml:</p>
<p><img src="http://social.hortis.ch/wp-content/uploads/2006/07/mapping.png" /></p>
<p><strong>Créer un fichier de configuration pour la base de données:</strong></p>
<p>Nous n&#8217;avons pas encore précisé a NHibernate comment retrouver les infos de connection a la base. Pour cela ecrire un fichier de config app.config, similaire a un fichier de properties, ressemblant a cela:</p>
<p><img src="http://social.hortis.ch/wp-content/uploads/2006/07/appconfig.png" /></p>
<p><strong> La magie de NHibernate</strong></p>
<p>Le job le plus fastidieux a été réalisé. Nous avons donc en possession:</p>
<p>WorldcupResults.cs &#8211; La classe C# a persister</p>
<p>WorldcupResults.hbm.xml &#8211; le fichier de mapping</p>
<p>app.config &#8211; Le fichier de configuration</p>
<p>Une table SQL dans la base de données</p>
<p>L&#8217;utilisation de NHibernate dans le code source est désormais assez simple :</p>
<p>Utiliser <a href="http://www.icsharpcode.net/OpenSource/SD/">SharpDevelop</a></p>
<p>Ajouter la référence NHibernate.dll et NUnit.dll<br />
Créer un objet configuration</p>
<p>Indiquer a la configuration quel type d&#8217;objet on veut persister</p>
<p>Créer une session vers la base de données</p>
<p>Load, store et query des objets</p>
<p>Flusher la session</p>
<p>Voici le code source du test unitaire qui permet de créer un enregistrement et retrouver le résultat :</p>
<p>using System;<br />
using NUnit.Framework;<br />
using System.Text.RegularExpressions;<br />
using System.Reflection;<br />
using NHibernate;<br />
using NHibernate.Cfg;</p>
<p>namespace NHibernateQuickStart<br />
{<br />
/// <summary><br />
/// Description of WorldcupResultsTest.<br />
/// </summary><br />
///<br />
[TestFixture]<br />
public class WorldcupResultsTest<br />
{<br />
Configuration cfg;<br />
ISessionFactory factory;</p>
<p>[TestFixtureSetUp]<br />
public void OneTimeSetUp()<br />
{<br />
Console.Out.WriteLine(&#8220;running &#8220;+MethodBase.GetCurrentMethod());<br />
cfg = new Configuration();<br />
cfg.AddFile(&#8220;WorldcupResults.hbm.xml&#8221;);<br />
factory = cfg.Configure(&#8220;app.config&#8221;).BuildSessionFactory();</p>
<p>}</p>
<p>[TestFixtureTearDown]<br />
public void OneTimeTearDown()<br />
{<br />
Console.Out.WriteLine(&#8220;running &#8220;+MethodBase.GetCurrentMethod());<br />
cfg = null;<br />
factory = null;<br />
}</p>
<p>[Test]<br />
public void Retrieve()<br />
{<br />
Console.Out.WriteLine(&#8220;running &#8220;+MethodBase.GetCurrentMethod());<br />
string team = &#8220;Angleterre&#8221;;<br />
CreateResult(team, 5, 4, 0, 1, 5, 0);</p>
<p>WorldcupResults w = GetResult(team);<br />
Assert.IsNotNull(w);<br />
Assert.AreEqual(w.Team, team);<br />
Assert.AreEqual(w.Played, 5);<br />
Assert.AreEqual(w.Wins, 4);<br />
Assert.AreEqual(w.Draws, 0);<br />
Assert.AreEqual(w.Losses, 1);<br />
Assert.AreEqual(w.GoalsFor, 5);<br />
Assert.AreEqual(w.GoalsAgainst, 0);<br />
Console.Out.WriteLine(w.ToString());</p>
<p>}</p>
<p>public WorldcupResults GetResult(string team) {</p>
<p>ISession session = factory.OpenSession();<br />
WorldcupResults w = (WorldcupResults)session.Load(typeof(WorldcupResults), team);<br />
session.Close();<br />
return w;</p>
<p>}</p>
<p>public WorldcupResults CreateResult(string team, int played, int wins, int draws, int losses, int goalsFor, int goalsAgainst) {<br />
ISession session = factory.OpenSession();<br />
ITransaction transaction = session.BeginTransaction();<br />
WorldcupResults results = new WorldcupResults(team, played, wins, draws, losses, goalsFor, goalsAgainst);<br />
session.Save(results);<br />
transaction.Commit();<br />
session.Close();<br />
return results;<br />
}</p>
<p>}<br />
}</p>
<p>NUnit vient avec une interface qui permet de lancer les tests :</p>
<p>On setupe le projet, NUnit retrouve automatiquement la classe de test. On la joue et cela donne :</p>
<p><img src="http://social.hortis.ch/wp-content/uploads/2006/07/nunit.png" /></p>
<p><strong>Enfin, compilation and run : </strong></p>
<p>Rajoutons un point d&#8217;entrée a notre projet , Main.cs :</p>
<p>depuis la methode methode main(), nous irons lire les enregistrements de notre table de la facon suivante (en utilisant NHibernate)</p>
<p>using System;<br />
using System.Collections;<br />
using System.Security;<br />
using System.Security.Permissions;<br />
using System.Reflection;<br />
using NHibernate;<br />
using NHibernate.Cfg;</p>
<p>[assembly:AllowPartiallyTrustedCallers]</p>
<p>namespace NHibernateQuickStart<br />
{<br />
class MainClass<br />
{<br />
public static void Main(string[] args)<br />
{<br />
Configuration cfg = new Configuration();<br />
cfg.AddAssembly(&#8220;NHibernateQuickStart&#8221;);</p>
<p>ISessionFactory factory = cfg.BuildSessionFactory();<br />
ISession session = factory.OpenSession();</p>
<p>IList resultList = session.CreateCriteria(typeof(WorldcupResults)).List();<br />
foreach(WorldcupResults result in resultList)<br />
{<br />
System.Diagnostics.Debug.WriteLine(result.Team + &#8220;, played: &#8221; + result.Played);<br />
}<br />
}<br />
}<br />
}</p>
<p>Pour compiler le projet et générer l&#8217;exécutable  nous utiliserons Nant .</p>
<p>Voici le fichier QuickStartNHibernate.build:</p>
<p><img src="http://social.hortis.ch/wp-content/uploads/2006/07/nant.png" /></p>
<p>Commande :</p>
<p><img src="http://social.hortis.ch/wp-content/uploads/2006/07/nant1.png" /></p>
<p>Lancement de l&#8217;application :</p>
<p>Lancer l&#8217;exécutable généré par nant. Nous obtenons :</p>
<p><img src="http://social.hortis.ch/wp-content/uploads/2006/07/exe.png" /></p>
<p><strong>Conclusion :</strong></p>
<p>On s&#8217;apercoit que les portages sont assez fidèles aux homologues du monde Java:</p>
<p>Il devient ainsi aisé d&#8217;implémenter une persistence avec NHibernate, si on a déjà pratiqué avec Java et Hibernate.</p>
<p>De même, on garde nos bonnes habitudes du monde Java pour tester et compiler grâce aux portages de JUnit et Ant.</p>
]]></content:encoded>
			<wfw:commentRss>http://social.hortis.ch/2006/07/21/developpement-net-persistence-avec-nhibernate/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Developper une application C# .NET avec Oracle</title>
		<link>http://social.hortis.ch/2006/07/04/developper-une-application-c-net-avec-oracle/</link>
		<comments>http://social.hortis.ch/2006/07/04/developper-une-application-c-net-avec-oracle/#comments</comments>
		<pubDate>Tue, 04 Jul 2006 06:52:27 +0000</pubDate>
		<dc:creator>usergone</dc:creator>
				<category><![CDATA[.NET]]></category>
		<category><![CDATA[C#]]></category>

		<guid isPermaLink="false">http://social.hortis.ch/2006/07/04/developper-une-application-c-net-avec-oracle/</guid>
		<description><![CDATA[Cet article va démontrer comment développer une application Oracle avec C# (en se passant de MSFT Visual Studio .NET).

 Preparation de l&#8217;environnement de développement

Comme  il a été précisé ci dessus, nous nous passerons de l&#8217;environnement de développement Miscrosoft sachant que nous n&#8217;avons pas acheté la licence et que nous voulons rester un minimum &#8220;open [...]]]></description>
			<content:encoded><![CDATA[<p>Cet article va démontrer comment développer une application Oracle avec C# (en se passant de MSFT Visual Studio .NET).</p>
<ul>
<li><span id="more-217"></span><strong> Preparation de l&#8217;environnement de développement</strong></li>
</ul>
<p>Comme  il a été précisé ci dessus, nous nous passerons de l&#8217;environnement de développement Miscrosoft sachant que nous n&#8217;avons pas acheté la licence et que nous voulons rester un minimum &#8220;open source&#8221;.</p>
<p>Pour cela, un IDE open source existe : il s&#8217;appelle <a href="http://www.icsharpcode.net/OpenSource/SD/">SharpDevelop</a>.</p>
<p>SharpDevelop a le mérite de supporter différents langages : C# et VB .NET.</p>
<p>Je choisirai C# puisque ce langage est très proche de Java.</p>
<p><strong>Installation de l&#8217;environnement .NET  (respecter l&#8217;ordre)</strong></p>
<p>1) Installer le framework .NET : pour cela downloader et installer <a href="http://msdn.microsoft.com/netframework/downloads/updates/default.aspx">Microsoft .NET version 2.0 Redistibutable package</a> (telechargement gratuit)</p>
<p>2) Installer le <a href="http://msdn.microsoft.com/netframework/downloads/updates/default.aspx">.NET Framework Version 2.0 SDK</a><br />
3) Installer l&#8217;IDE <a href="http://www.icsharpcode.net/OpenSource/SD/Download/">SharpDevelop</a></p>
<p>Pour se connecter a Oracle, nous avons le choix entre 3 méthodes :</p>
<ul>
<li>ODBC : méthode &#8220;universelle&#8221; pour se connecter à une base de données : ne garantit pas les meilleurs résultats</li>
<li>via un provider intégré au framework : ne garantit pas non plus les performances optimales.</li>
<li>via un provider dédié, concu par l&#8217;editeur de la base de données : exclusivement construit pour cette base, il vous garantira des meilleurs résultats.</li>
</ul>
<p>Nous choisirons cette troisième option et irons downloader sur le site d&#8217;<a href="http://otn.oracle.com/">Oracle Technet</a> le Oracle Data Provider pour .NET 2.0.</p>
<p>Ce Data Provider fait partie d&#8217;un bundle pack incluant également :</p>
<p>Oracle Data Provider for .NET 1.x</p>
<p>Oracle Developer Tools for Visual Studio .NET 2003</p>
<p>Oracle Developer Tools for Visual Studio .NET 2005</p>
<p>Oracle Services for Microsoft Transaction Server</p>
<p>Télécharger le bundle <a href="http://download.oracle.com/otn/other/ole-oo4o/ODAC10202Beta.exe">ODAC10202Beta.exe</a> (213mb)</p>
<p>A l&#8217;installation , dans l&#8217;Oracle Installer, ne cocher que la case  <strong>Oracle Data Provider for .NET 2.x</strong> .</p>
<p><strong>Vérification de l&#8217;installation</strong></p>
<p>Lancer SharpDevelop.</p>
<p>Créer un nouveau projet (appelé Solution) C#, choisir &#8216;Console Application&#8217;.</p>
<p>Ouvrir la vue &#8216;Project&#8217; (onglet en bas a gauche)</p>
<p><img src="http://social.hortis.ch/wp-content/uploads/2006/07/sharpDevelopProject.PNG" /></p>
<p>Ouvrir le panneau de références (Click droit sur le projet &#8216;Add Reference&#8217;) et vérifier que les librairies Oracle DataAccess sont présentes :</p>
<p><img src="http://social.hortis.ch/wp-content/uploads/2006/07/SharpDevelopReference.PNG" /></p>
<p>La version de Oracle Data Access est pour base 10g (10.2)</p>
<p><strong>Installer la base de données :</strong></p>
<p>Dans le cadre d&#8217;un développement nous n&#8217;installerons pas une version enterprise d&#8217;Oracle 10g mais nous choisirons la version gratuite Oracle (10g) Express.</p>
<p>Télécharger et installer <a href="http://www.oracle.com/technology/products/database/xe/index.html">Oracle XE (Express Edition)</a>.</p>
<p><strong>Créer l&#8217;environnement de développement en base :</strong></p>
<p>Nous allons nous connecter a Oracle XE et créer :</p>
<ul>
<li>Un schema utilisateur DOTNET</li>
<li>Une table worldcup_results</li>
</ul>
<p>Sur Windows XP :</p>
<p>Menu Start -> All programs -> Oracle Database 10g Express Edition -> Démarrer la base de données<br />
L&#8217;application d&#8217;administration est une interface Web.</p>
<p><strong>Accéder à la base de données:</strong></p>
<p>Menu Start -> All programs -> Oracle Database 10g Express Edition -> Accéder à la page d&#8217;accueil de la base de données</p>
<p>ou</p>
<p>Dans un navigateur : http://localhost:8080/apex</p>
<p><img src="http://social.hortis.ch/wp-content/uploads/2006/07/XELogin.PNG" /></p>
<p>Se connecter SYSTEM :</p>
<p><img src="http://social.hortis.ch/wp-content/uploads/2006/07/XEAdmin.PNG" /></p>
<p>Accéder à la page de création de schémas utilisateur: Administration -> Manage Database Users -> Create User</p>
<p>Créer le schéma DOTNET:</p>
<p><img src="http://social.hortis.ch/wp-content/uploads/2006/07/XEUser.PNG" /></p>
<p>Se déconnecter du schéma SYSTEM et se reconnecter avec le user DOTNET.</p>
<p><img src="http://social.hortis.ch/wp-content/uploads/2006/07/XELoginDOTNET.PNG" /></p>
<p><strong>Créer une table worldcup_results :</strong></p>
<p>Sur l&#8217;interface d&#8217;admin, suivre : Object browser -> Create -> Table</p>
<p><img src="http://social.hortis.ch/wp-content/uploads/2006/07/XETable.PNG" /></p>
<p>Après création de la table saisir quelques données :</p>
<p>Aujourd&#8217;hui 3 juillet, en ce qui concerne l&#8217;équipe de France par exemple, nous avons 5 matches joués, 3 gagnés, 2 ex aequos, 0 perdus, 7 buts marqués, 2 encaissés:</p>
<p><img src="http://social.hortis.ch/wp-content/uploads/2006/07/XEData1.PNG" /></p>
<p>On fera de meme pour les 3 autres equipes encore en course pour la demi finale :</p>
<p>Allemagne : 5 matches joués, 5 gagnés, 0 perdus, 0 nuls, 11 buts marqués, 3 encaissés.</p>
<p>Italie : 5 matches joués, 4 gagnés, 0 perdus, 1 nul, 9 buts marqués, 1 encaissé.</p>
<p>Portugal : 5 matches joués, 5 gagnés, 0 perdus, 0 nul, 6 buts marqués , 1 encaissé.</p>
<p><img src="http://social.hortis.ch/wp-content/uploads/2006/07/XERows.PNG" /></p>
<p><strong>Développement de l&#8217;application:</strong></p>
<p>Reprendre SharpDeveloper et ouvrir notre Solution (groupe de projets) <em>OracleApplicationTest</em>.</p>
<p>Avant de commencer ajouter la référence à Oracle dans votre projet :<br />
Click droit projet, &#8216;Add Reference&#8217; : descendre dans la liste jusqu&#8217;a trouver <strong>Oracle.DataAccess</strong>, puis l&#8217;ajouter.</p>
<p>Une fois la référence ajoutée , faire le <strong>using</strong> (équivalent de <strong>import </strong>en Java) comme suit :</p>
<p><strong>using Oracle.DataAccess.Client;</strong></p>
<p><strong> Création de la connexion</strong></p>
<p>La première chose à faire est l&#8217;initialisation de l&#8217;objet qui va effectuer une connexion à la base de données.</p>
<p>Nous avons l&#8217;objet OracleConnection,. prenant en paramètre la chaine de connexion.</p>
<p>Pour la chaine de connexion, nous utiliserons la méthode de nommage Easy Connect (qui évite tout fichier de configuration) :</p>
<p><em>user id=id;password=pass;data source=host:port/service_name</em><br />
<strong><em>Code :</em></strong></p>
<p>using System;<br />
using System.Collections.Generic;<br />
using Oracle.DataAccess.Client;</p>
<p>class MainClass {</p>
<p>private static OracleConnection conn = new OracleConnection();</p>
<p>public static void Main(string[] args)<br />
{</p>
<p>conn.ConnectionString =  &#8220;User Id=DOTNET;Password=DOTNET;Data  Source=localhost:1521/XE&#8221;;</p>
<p>&#8230;</p>
<p>}</p>
<p>}</p>
<p><strong>Ouverture/Fermeture connexion:</strong></p>
<p>L&#8217;ouverture se fait au moyen de la méthode <strong>Open() </strong>et la fermeture au moyen de la méthode <strong>Dispose().</strong></p>
<p><em><strong>Code :</strong></em></p>
<p>try {<br />
conn.Open();<br />
Console.WriteLine(&#8220;Connection opened successfully!&#8221;);<br />
} catch (Exception ex) {<br />
Console.WriteLine(ex.Message.ToString());<br />
} finally {<br />
conn.Dispose();<br />
}</p>
<p><strong>Fetch des données :</strong></p>
<p>a) Déclarer une commande (pour exécuter le SQL) avec OracleCommand et écrire la requête SQL, et déclarer un OracleDataReader pour la lecture.<br />
b) Ouvrir un block <em>try</em></p>
<p>c) Ouvrir la connexion</p>
<p>d) Déclarer la requête SQL</p>
<p>e) Assigner la connexion à OracleCommand</p>
<p>f) Passer la commande en mode Text</p>
<p>g) Exécuter la requête</p>
<p>h) Boucler sur les résultats et les afficher a la console</p>
<p>i) Fermer les ressources (OracleCommand, OracleDataReader, OracleConnection)</p>
<p><strong><em>Code :</em></strong></p>
<p>// a)</p>
<p>OracleDataReader viewResultsReader;</p>
<p>OracleCommand viewResultsCmd;</p>
<p>// b)</p>
<p>try {</p>
<p>// c)</p>
<p>conn.Open();<br />
// d)<br />
viewResultsCmd = new OracleCommand(&#8220;SELECT &#8221; +<br />
&#8220;Team, &#8221; +<br />
&#8220;Played, &#8221; +<br />
&#8220;Wins, &#8221; +<br />
&#8220;Draws, &#8221; +<br />
&#8220;Losses, &#8221; +<br />
&#8220;Goals_For, &#8221; +<br />
&#8220;Goals_Against &#8221; +<br />
&#8220;FROM Worldcup_Results &#8220;);</p>
<p>// e)<br />
viewResultsCmd.Connection =conn;</p>
<p>// f)<br />
viewResultsCmd.CommandType = CommandType.Text;</p>
<p>// g)</p>
<p>viewResultsReader = viewResultsCmd.ExecuteReader();</p>
<p>// h)<br />
while (viewResultsReader.Read()) {<br />
Console.Write(&#8220;Team: &#8221; + viewResultsReader.GetString(0) + &#8220;, &#8220;);<br />
Console.Write(&#8220;Played: &#8221; + viewResultsReader.GetDecimal(1).ToString() + &#8220;, &#8220;);<br />
Console.Write(&#8220;Wins: &#8221; + viewResultsReader.GetDecimal(2).ToString() + &#8220;, &#8220;);<br />
Console.Write(&#8220;Draws: &#8221; + viewResultsReader.GetDecimal(3).ToString() + &#8220;, &#8220;);<br />
Console.Write(&#8220;Losses: &#8221; + viewResultsReader.GetDecimal(4).ToString() + &#8220;, &#8220;);<br />
Console.Write(&#8220;Goals for: &#8221; + viewResultsReader.GetDecimal(5).ToString() + &#8220;, &#8220;);<br />
Console.WriteLine(&#8220;Goals against: &#8221; +         viewResultsReader.GetDecimal(6).ToString() );<br />
}<br />
// i)</p>
<p>viewResultsReader.Close();<br />
viewResultsReader.Dispose();<br />
viewResultsCmd.Dispose();</p>
<p>} catch (Exception ex) {<br />
Console.WriteLine(ex.Message.ToString());<br />
} finally {<br />
conn.Dispose();<br />
}</p>
<p>Le résultat à la console :</p>
<p><img src="http://social.hortis.ch/wp-content/uploads/2006/07/Console.png" /></p>
<p><strong>Conclusion:</strong></p>
<p>On s&#8217;apercoit avec ce petit programme que</p>
<p>1) Le c# est tres proche de Java</p>
<p>2) Connexion a la base Oracle et requetes se font tres naturellement (tres proche de l&#8217;utilisation de JDBC)</p>
<p>Si vous etes interessés par d&#8217;autres articles a ce sujet, faites le savoir en commentaire. Je prevois deja de faire un article au sujet d&#8217;une application graphique, elle aussi connectée à Oracle.</p>
<p><strong>Sample Code :</strong></p>
<p>Downloader le projet et ses sources >> <a href="http://social.hortis.ch/wp-content/uploads/2006/07/OracleApplicationTest.zip">ici</a> <<</p>
]]></content:encoded>
			<wfw:commentRss>http://social.hortis.ch/2006/07/04/developper-une-application-c-net-avec-oracle/feed/</wfw:commentRss>
		<slash:comments>4</slash:comments>
		</item>
	</channel>
</rss>
