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

Accès aux données Discussion :

[ADO.Net][C#/Oracle]Pourquoi ai-je des difficultés à exécuter une requête ?


Sujet :

Accès aux données

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10
    Points : 4
    Points
    4
    Par défaut [ADO.Net][C#/Oracle]Pourquoi ai-je des difficultés à exécuter une requête ?
    Bonjour à tous!
    je suis en train de créer une appli permettant de lire dans une base de donnée oracle 8.0. J'ai donc installé ODP.NET. J'arrive à créer ma connexion et le test est réussi. Par contre pas moyen de lancer une "oraclecommand":

    Une exception non gérée du type 'System.Data.OracleClient.OracleException' s'est produite dans system.data.oracleclient.dll

    Informations supplémentaires : Erreur système.
    Mon 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
    
    using System.Data;
    using Oracle.DataAccess.Client;
    using System.Data.OracleClient;
    (...)
    this.oracleConnection1.Open();
    this.oracleCommand1.CommandText="SELECT nom FROM relation;";
    System.Data.OracleClient.OracleDataReader dr;
    dr=this.oracleCommand1.ExecuteReader();
    while(dr.Read()){
    this.listBox1.Items.Add(dr["NOM"]);
    }
    dr.Close();
    this.oracleConnection1.Close();
    Il plante sur la ligne en rouge...
    J'ai également ajouter une référence :"Oracle.DataAccess.dll"

    Merci

  2. #2
    Expert éminent
    Avatar de neo.51
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    2 663
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 663
    Points : 6 418
    Points
    6 418
    Par défaut
    Est-ce que tu es sur que ton client oracle 10 fonctionne bien avec ta base en 8.0 ?

    Je m'explique ODP.NET t'installe un client 10, ce client est désormais ton client par défaut, et donc le client utilisé par ton applis .NET.

    Mais je me souviens avoir eut un soucis de compatibilitée entre un serveur oracle 8 pas à jours niveau patch et un client 10.

  3. #3
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    J'ai installé le client 9 et il est "théoriquement compatible" avec oracle 8.
    Merci

  4. #4
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Question bête, comme celà n'apparaît pas dans ton code,

    this.oracleCommand1.Connection est-elle correctement initialisée ?

  5. #5
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    oui ça a été fait dans la fenêtre paramètres de oraclecommand1...

  6. #6
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par youse
    oui ça a été fait dans la fenêtre paramètres de oraclecommand1...
    ah bon dans ceas j'aurais trouver logique un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    this.oracleCommand1.Connection.Open()
    de plus Il est toujours judicieux d'envelopper tout code de connection et transaction SGBD dans un bloc try/catch/finally histoire d'avoir des messages d'exception plus explicite

  7. #7
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Bizarre...j'arrive à remplir un dataset avec les données
    en effet tu veux dire que çà passe avec un OracleDataAdapter ???
    Dans ce cas à ta place j'aurais presque envie d'abandonner toute initialisation par le designer afin de verifier si çà passe en codant classiquement mon petit composant d'accès au données

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    benh ça y est...j'y suis. En générant mon SQL via l'assistant ma requête fonctionne! Il me génère une requête sans ";" à la fin...et en faisant un copier-coller de cette requête ca fonctionne aussi :

    this.oracleCommand1.CommandText="SELECT nom FROM relation";

  9. #9
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par youse
    benh ça y est...j'y suis. En générant mon SQL via l'assistant ma requête fonctionne! Il me génère une requête sans ";" à la fin...et en faisant un copier-coller de cette requête ca fonctionne aussi :
    Arf pourtant elle est connue celle-là mais je passe souvent à côté , entre nous je peux t'assurer que le try/catch t'aurait mis plus vite sur la piste

  10. #10
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    10
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10
    Points : 4
    Points
    4
    Par défaut
    Ah bon! C'étais la première fois que j'essayais une liaison avec Oracle. Sous SQL server j'ai toujours mis un ";" à la fin de mes requêtes...

    Pour le try catch euh...je vois pas trop en fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
     
    try{connexion à la db}
    //si erreur il passe directement ds le catch
    catch(){//code à effectuer en cas d'erreur}
    Ca sert justement à éviter d'afficher de belles pages d'erreurs? Non?
    Peux tu m'éclairer?
    Merci

  11. #11
    Expert éminent
    Avatar de neo.51
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    2 663
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 663
    Points : 6 418
    Points
    6 418
    Par défaut
    arf et dire que j'avais bataillé 2 jours sur le même problème quand je me suis mis à oracle

  12. #12
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    //...les déclarations
    try
    {
       //tout le code d'accès aux données
    }
    //si erreur il passe directement ds le catch
    catch(Exception ex)
    {
        //code à effectuer pour afficher ex.ToString() ou ex.Message
       // c'est selon ....
    }
    pendant le dev ceci peut être utile voir à modifier une fois la mise en production advenue

  13. #13
    Expert éminent
    Avatar de neo.51
    Profil pro
    Inscrit en
    Avril 2002
    Messages
    2 663
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations forums :
    Inscription : Avril 2002
    Messages : 2 663
    Points : 6 418
    Points
    6 418
    Par défaut
    Si je peux me permettre je prèfèrerais :

    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
     
    //...les déclarations
    try
    {
      //tout le code d'accès aux données
    }
    //si erreur il passe directement ds le catch
    catch(Exception ex)
    {
       //code à effectuer pour afficher ex.ToString() ou ex.Message
     // c'est selon ....
    }
    finally
    {
       //Ici tu ferme ta connection, que tu ai une erreur ou pas la connection
     doit-être fermée sinon tu ne libèreras pas les ressources
    }
    à moins de mettre ta connection dans un using, mais ça c'est un autre débat

  14. #14
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par neo.51
    Si je peux me permettre je prèfèrerais :

    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
     
    //...les déclarations
    try
    {
     //tout le code d'accès aux données
    }
    //si erreur il passe directement ds le catch
    catch(Exception ex)
    {
      //code à effectuer pour afficher ex.ToString() ou ex.Message
    // c'est selon ....
    }
    finally
    {
      //Ici tu ferme ta connection, que tu ai une erreur ou pas la connection
    doit-être fermée sinon tu ne libèreras pas les ressources
    }
    à moins de mettre ta connection dans un using, mais ça c'est un autre débat
    +1 effectivement

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

Discussions similaires

  1. [C# 2.0][ADO.Net]Connexion à Oracle
    Par MoscoBlade dans le forum Accès aux données
    Réponses: 6
    Dernier message: 18/10/2007, 14h54
  2. [ADO.NET] Connection Oracle Versus SQL Server
    Par gibea00 dans le forum Framework .NET
    Réponses: 1
    Dernier message: 06/12/2006, 16h38
  3. [ADO.Net][2.0] Pourquoi ma connection reste ouverte ?
    Par le-roy_a dans le forum Accès aux données
    Réponses: 5
    Dernier message: 24/05/2006, 21h36
  4. [ADO.Net][C#/Oracle]Comment gérer OracleType.VarChar?
    Par el_poitevin dans le forum Accès aux données
    Réponses: 5
    Dernier message: 30/03/2006, 13h08
  5. [ADO.Net][C#/Oracle] Comment utiliser une requête paramètrée ?
    Par kaboume dans le forum Accès aux données
    Réponses: 4
    Dernier message: 05/07/2005, 14h50

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