IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

C# Discussion :

Oracle - C# - Visual Studio 2010


Sujet :

C#

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 71
    Par défaut Oracle - C# - Visual Studio 2010
    Bonjour,

    Je galère totalement depuis hier. Je travaille habituellement sur ue base de données locale SQL Server Compact sous Visual Studio.

    Je voudrais me connecter à une base de données Oracle, j'ai installé la version 10g XE de Oracle. Après avoir installé Oracle Universal Installer, j'ai importé la référence Oracle.DataAccess.dll manuellement en passant par l'onglet parcourir de "ajouter une référence" et en lui donnant le chemin : "C:\oracle\product\10.1.0\Client_1\bin", cela m'a ensuite permis de mettre "using Oracle.DataAccess.Client.dll" sans que Visual Studio ne me signale une erreur.

    Je ne sais pas si j'ai importé manuellement la bonne référence, mais lorsque je compile, j'obtiens une erreur dès que je veux ouvrir la connexion avec le .Open().

    Pourriez-vous me dire si la référence que j'ai importé manuellement est correcte, et me donner un exemple de code qui me permettrai d'effectuer un SELECT?

    Merci.

  2. #2
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    De mémoire, il me semble que c'est Oracle.DataAccess.dll et non Oracle.DataAccess.Client.dll... mais je peux me tromper

    j'obtiens une erreur dès que je veux ouvrir la connexion avec le .Open().
    Quelle erreur ?

    Si ça pète sur le Open, c'est probablement la chaine de connexion qui est incorrecte, ou alors le serveur qui n'est pas accessible

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 71
    Par défaut
    Bonjour,

    Au fait lorsque je n'installe que Oracle XE, et que je configure une source de données qui passe par les outils OLE, pas de problèmes, le test de connexion réussi.
    Mais j'ai vu à plusieurs reprise sur le net des exemples de code avec "OracleConnection" etc etc, j'ai donc voulu télécharger le client Oracle pour pouvoir me connecter, et dès qu'il est installé, il me permet de rajouter le "Oracle.DataAccess.dll" manuellement dans les références, et ensuite je peux ajouter Oracle.DataAccess.Client.dll en using...

    (Si je mets using Oracle.DataAccess.dll, j'ai alors des erreurs lorsque je veux créer la connexion avec OracleConnection maconnec=new OracleConnection(), il me dit qu'un using est manquant...).
    Donc jusque là, Visual Studio ne me signale pas d'erreur.

    Dès que je lance la compilation, j'obtiens une erreur au "maconnec.Open()"...
    Je pensais alors créer une source de données Oracle comme j'avais fait précédemment, et travailler avec un DataSet, mais quand je veux créer une source de données, le test de connexion échoue. Je pense que j'ai trouvé d'où venait le problème : après l'installation du client oracle, la base de données n'a plus de listener, mais je ne sais pas comment lui en appliquer un nouveau...

    Je ne sais pas si j'ai été bien clair, mais habituellement je travaille sur les BD de SQL Server Compact, sans passer par un DataSet...S'il est plus facile de m'expliquer comment faire la même démarche pour me connecter à Oracle plutôt que de résoudre mon problème de listener, je suis preneur

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    et le message d'erreur ?


    www.connectionstrings.com
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Citation Envoyé par rousseau_damien Voir le message
    lorsque je compile, j'obtiens une erreur dès que je veux ouvrir la connexion avec le .Open()..
    Désolé , mais cette phrase est pas clair.

    Une erreur à la compil ou à l'exécution ?

    Et encore uen fois quel est le message d'erreur ?

    Alors merci d'être plus précis, car on a pas de boule de cristal.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 71
    Par défaut
    ORA-12514 : TNS : le processus d'écoute ne connaît pas le service demandé dans le descripteur de connexion
    C'est bien à l'exécution.

    Code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Oracle.DataAccess.Client;
     
    namespace ConsoleApplication4
    {
        class Program
        {
            static void Main(string[] args)
            {
                string toto = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=pc-de-damien-bu)(PORT=1522)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=Damien)));User Id=Damien;Password=Damien;";
                OracleConnection OConnexion = new OracleConnection();
                OConnexion.ConnectionString = toto;
     
                try
                {
                    OConnexion.Open();
                    OConnexion.Close();
                }
                catch(Exception e)
                {
                    Console.WriteLine(e);
                }
            }
        }
    }
    Lorsque je ne mets pas le try catch, Visual Studio se stop au .Open()

  7. #7
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Par défaut
    Ca de mémoire, c'est un truc avec le TNSNames.

  8. #8
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    a priori c'est ton service_name qui n'est pas bon... essaie plutôt avec "SERVICE_NAME=XE" dans ta chaine de connexion

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    71
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2008
    Messages : 71
    Par défaut
    Impeccable, merci!!

    Voici le code pour les personnes qui rencontreraient le même problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using Oracle.DataAccess.Client;
     
    namespace ConsoleApplication4
    {
        class Program
        {
            static void Main(string[] args)
            {
                string Ochaine = "Data Source=(DESCRIPTION=(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=pc-de-damien-bu)(PORT=1521)))(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=XE)));User Id=Damien;Password=Damien;";
                OracleConnection OConnexion = new OracleConnection();
                OConnexion.ConnectionString = Ochaine;
     
                try
                {
                    OConnexion.Open();
                    Console.WriteLine("Connexion ouverte");
     
                    OracleCommand query = new OracleCommand();
     
                    query.Connection = OConnexion;
                    query.CommandText = "SELECT * FROM etudiant";
     
                    OracleDataReader reader;
                    reader = query.ExecuteReader();
     
                    while (reader.Read())
                    {
                        Console.WriteLine(reader[0].ToString());
                    }
     
                    OConnexion.Close();
                    Console.WriteLine("Connexion fermée");
                }
                catch(Exception e)
                {
                    Console.WriteLine(e);
                }
            }
        }
    }

    Comment as-tu trouvé le "SERVICE_NAME=XE"? Car c'est pour mon travail de fin d'études, donc j'effectue les tests chez moi actuellement sur la version Express gratuite mais la BD Oracle sur laquelle mon programme devra tourner est une version payante, dès que je connais la version comment puis-je retrouver le "SERVICE_NAME"?

    Et alors autre question, il me semble que sur le site de MSDN j'avais vu qu'il fallait rajouter un attribut dans "Ochaine" pour assurer la sécurité des données sur le réseau (du genre : Integrated Security=Yes), est-ce possible que la sécurité soit assurée avec simplement un attribut en plus?

  10. #10
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Citation Envoyé par rousseau_damien Voir le message
    Comment as-tu trouvé le "SERVICE_NAME=XE"?
    Par ce que "XE" est le nom de service par défaut pour Oracle XE. Je suis même pas sûr qu'on puisse le changer...

    Citation Envoyé par rousseau_damien Voir le message
    Car c'est pour mon travail de fin d'études, donc j'effectue les tests chez moi actuellement sur la version Express gratuite mais la BD Oracle sur laquelle mon programme devra tourner est une version payante, dès que je connais la version comment puis-je retrouver le "SERVICE_NAME"?
    C'est un truc que tu configures quand tu crées une BDD Oracle, je sais plus trop où ça se trouve... tu devrais trouver la réponse dans le forum Oracle

    Citation Envoyé par rousseau_damien Voir le message
    Et alors autre question, il me semble que sur le site de MSDN j'avais vu qu'il fallait rajouter un attribut dans "Ochaine" pour assurer la sécurité des données sur le réseau (du genre : Integrated Security=Yes), est-ce possible que la sécurité soit assurée avec simplement un attribut en plus?
    La chaine de connexion est spécifique au type de base de données. Si tu as vu ça sur MSDN, ça concernait probablement SQL Server et non Oracle... Je connais pas trop les options possibles dans la chaine de connexion, il faut regarder dans la doc ou sur ce site

    PS: dans tes prochains messages, pense à utiliser les balises CODE stp . Je les ai ajoutées dans tes messages ci-dessus

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Débutant] Oracle 8i et Visual Studio 2010
    Par slifeur dans le forum ASP.NET
    Réponses: 7
    Dernier message: 02/02/2012, 13h33
  2. lien entre visual studio 2010 et oracle avec ODP
    Par adib1988 dans le forum Accès aux données
    Réponses: 1
    Dernier message: 15/07/2011, 17h39
  3. F# sera inclus dans Visual Studio 2010
    Par LLB dans le forum F#
    Réponses: 7
    Dernier message: 16/06/2010, 13h43
  4. Téléchargez la première CTP de Visual Studio 2010 et du .NET Framework 4.0
    Par Jérôme Lambert dans le forum Général Dotnet
    Réponses: 5
    Dernier message: 31/10/2008, 11h49
  5. Réponses: 1
    Dernier message: 17/05/2006, 21h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo