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

VB.NET Discussion :

Base Oracle et vb.net 2008


Sujet :

VB.NET

  1. #1
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2010
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2010
    Messages : 347
    Par défaut Base Oracle et vb.net 2008
    Bonjour,

    j'ai un soucis pour me connecter.
    Voici 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
     
    Imports System.Data
    Imports Oracle.DataAccess.Client ' ODP.NET Oracle managed provider
    Public Class Gestion_notes
        Public oradb As String = "Data Source=localhost;User Id=gestionMatiere;Password=gestionMatiere;"
        Public conn As New OracleConnection(oradb)
     
        Private Sub Gestion_notes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            Try
                conn.Open()
                'exemple de requete sql
                Dim sql As String = "select * FROM utilisateur"
     
                Dim cmd As New OracleCommand(sql, conn)
                'cmd.CommandType = CommandType.Text
                Dim dr As OracleDataReader = cmd.ExecuteReader()
                dr.Read()
                'Label1.Text = dr.Item("dname") ' lecture de la colonne (via le nom de colonne)
                'Label1.Text = dr.Item(0) ' lecture de la première colonne (via l'indice) 
                'Label1.Text = dr.GetString(0) ' lecture de la première colonne (via l'indice)
            Catch ex As Exception
                MessageBox.Show(ex.Message.ToString())
     
            End Try
     
        End Sub
    Ce code fonctionnait très bien comme ceci sur le PC du lycée mais chez moi cela ne fonctionne pas.

    Le message d'erreur :
    L'exception InvalidOperationException n'a pas été gérée. La référence d'objet n'est pas définie à une instance d'un objet.
    Je n'ai pas plus d'infos. Apparemment c'est un problème redondant mais je n'ai pas trouvé de solution.
    Je ne met que ce bout de code puisque l'erreur apparaît au lancement du programme, donc dans le load je suppose.

    Si vous avez des idées,

    merci.

  2. #2
    Membre expérimenté
    Avatar de Kropernic
    Homme Profil pro
    Analyste / Programmeur / DBA
    Inscrit en
    Juillet 2006
    Messages
    3 932
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Belgique

    Informations professionnelles :
    Activité : Analyste / Programmeur / DBA
    Secteur : Distribution

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Par défaut
    As-tu la base de données oracle de ton lycée installée sur ton ordinateur chez toi ?

  3. #3
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    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 202
    Par défaut
    l'erreur fournit aussi le numéro de ligne qui passe en erreur dans le stacktrace ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  4. #4
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2010
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2010
    Messages : 347
    Par défaut
    Citation Envoyé par griftou Voir le message
    As-tu la base de données oracle de ton lycée installée sur ton ordinateur chez toi ?
    Oui, je dispose d'oracle 10g ainsi que de SQL developper. La même installation qu'au lycée.

    Citation Envoyé par Pol63 Voir le message
    l'erreur fournit aussi le numéro de ligne qui passe en erreur dans le stacktrace ...
    Stacktrace :
    à gestionMatiereEleve.My.MyProject.MyForms.Create__Instance__[T](T Instance) dans 17d14f5c-a337-4978-8281-53493378c1071.vb:ligne 190
    à gestionMatiereEleve.My.MyProject.MyForms.get_Gestion_notes()
    à gestionMatiereEleve.My.MyApplication.OnCreateMainForm() dans K:\AP\AP 5 - Gestion notes Oracle\gestionMatiereEleve\My Project\Application.Designer.vb:ligne 35
    à Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.OnRun()
    à Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.DoApplicationModel()
    à Microsoft.VisualBasic.ApplicationServices.WindowsFormsApplicationBase.Run(String[] commandLine)
    à gestionMatiereEleve.My.MyApplication.Main(String[] Args) dans 17d14f5c-a337-4978-8281-53493378c1071.vb:ligne 81
    à System.AppDomain._nExecuteAssembly(Assembly assembly, String[] args)
    à Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()
    à System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
    à System.Threading.ThreadHelper.ThreadStart()

  5. #5
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    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 202
    Par défaut
    la création du form a planté, donc soit son constructeur a planté, soit des new dans des variables de classes
    dans le code que tu nous donnes, la seule ligne correspondant à ca est
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Public conn As New OracleConnection(oradb)
    ce qui voudrait dire que la classe oracleconnection plante ... peut etre qu'elle n'aime pas la chaine de connexion
    tu peux enlever cette ligne et déclarer conn dans le try catch pour voir l'erreur, ou voir s'il n'y a pas une InnerException dans l'erreur ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  6. #6
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2010
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2010
    Messages : 347
    Par défaut
    Ouh la...
    Bon déjà j'ai du réécrire la ligne dans chacun de mes sub, étant donné qu'il n'accepte pas de public dans la déclaration.
    Ensuite au lancement, j'ai une message box : "La référence..."

    La form se lance !
    Et dès que je choisis une action, le script plante avec un message :
    "La référence d'objet..." sur la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Dim conn As New OracleConnection(oradb)
    que j'ai réécrit dans mon autre sub.

  7. #7
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    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 202
    Par défaut
    public ne peut pas apparaitre au sein d'une sub, il faut alors utiliser dim

    sinon comme je l'ai dit, regarde s'il n'y a pas une innerexception sur ex en mettant un point d'arret sur le catch
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2010
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2010
    Messages : 347
    Par défaut
    J'ai mis un point d'arrêt sur Catch mais à part la message box qui pop pour me dire que la référence n'est pas définie, il ne se passe rien. Il lance la form.
    Peut être que je n'ai pas bien compris ce que tu voulais dire...


    Edit : dans valeur, il m'indique "Expression attendue". ça vient de la peut être ?

  9. #9
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    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 202
    Par défaut
    tu mets ton point d'arret sur la ligne du messagebox
    une fois dessus, tu sélectionnes ex et tu fais shift+F9 (ou clic droit espion express)
    tu verras les propriétés de ex, dont une nommée InnerException
    si elle ne vaut pas nothing, il y a des chances qu'elle t'en dise plus sur le problème
    (innerexception est de type exception et peut donc aussi avoir une innerexception ...)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  10. #10
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2010
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2010
    Messages : 347
    Par défaut
    InnerException est à Nothing :/

  11. #11
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2010
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2010
    Messages : 347
    Par défaut
    Bon...

    J'ai rajouté toutes les références possibles concernant Oracle (références .net et com), j'ai fais les imports de plusieurs "machins" (je sais pas si c'est des librairies, classes, ...) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Imports System.Data
    Imports Oracle.DataAccess.Client ' ODP.NET Oracle managed provider
    Imports Oracle.DataAccess.Server
    Imports ORAOLEDBLib
    Imports Oracle.DataAccess.Types
    J'ai toujours le même message d'erreur...
    J'ai vraiment besoin de connaître la façon de régler ce problème pour au moins vérifier que ce j'ai déjà fait fonctionne :/

  12. #12
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    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 202
    Par défaut
    demande sur le forum oracle ou c# (c# est pareil que vb.net à part la syntaxe et y a moins de noobs chez eux, donc potentiellement plus de pros ...)

    sinon imports sert à ne pas avoir à taper les namespaces pour utiliser les noms, ca ne fait rien de plus
    par exemple pour taper bitmap au lieu de system.drawing.bitmap on ajoute imports system.drawing en haut
    ajouter une dll en référence permet par contre d'utiliser les classes contenues dedans
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  13. #13
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2010
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2010
    Messages : 347
    Par défaut
    OK merci des précisions !

  14. #14
    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
    Déjà, neutraliser l'exception handler et dérouler en pas à pas plutot que mettre des BP, et nous dire quelle est la ligne qui plante, ce sera plus simple.

  15. #15
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 202
    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 202
    Par défaut
    je pense que c'est le new OrclaConnection(chaine) qui plante
    je crois que j'ai déjà vu des gens avec la même erreur sur le forum ...
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  16. #16
    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 Pol63 Voir le message
    je pense que c'est le new OrclaConnection(chaine) qui plante
    je crois que j'ai déjà vu des gens avec la même erreur sur le forum ...
    Je connais mal le formattage des chaines de connexions de Oracle (surtout sans passer par le TNSNAMES) mais le DataSource=LocalHost me semble suspect.

  17. #17
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2010
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2010
    Messages : 347
    Par défaut
    Citation Envoyé par Bluedeep Voir le message
    Déjà, neutraliser l'exception handler et dérouler en pas à pas plutot que mettre des BP, et nous dire quelle est la ligne qui plante, ce sera plus simple.
    Neutraliser l'exception handler = enlever le try catch ?
    Si oui, j'ai essayé. Mode pas à pas : il s'arrête sur la ligne du Public conn...

    Et l'espion sur conn me dit que sa valeur est à nothing.

  18. #18
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2010
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2010
    Messages : 347
    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
    13
    14
    15
     
    Dim oradb As String = "Data Source=(DESCRIPTION=" _
               + "(ADDRESS_LIST=(ADDRESS=(PROTOCOL=TCP)(HOST=OTNSRVR)(PORT=1521)))" _
               + "(CONNECT_DATA=(SERVER=DEDICATED)(SERVICE_NAME=ORCL)));" _
               + "User Id=gestionMatiere;Password=gestionMatiere;"
        'Public oradb As String = "Data Source=127.0.0.1;User Id=gestionMatiere;Password=gestionMatiere;"
        'Public conn As New OracleConnection(oradb)
     
     
        Public Sub Gestion_notes_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
     
            Try
                Dim conn As New OracleConnection()
                conn.ConnectionString = oradb
                conn.Open()
    J'ai repris ce code du cours de développez.com : http://xo.developpez.com/tutoriel/do...acle/odt/#L3.2

    J'ai cette fois ci le message :
    La référence d'objet...
    dans une message box et le programme se lance enfin !

    Par contre, quand je clique sur un bouton, par exemple :
    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
     
    Private Sub btnAjoutEleve_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnAjoutEleve.Click
            Dim conn As New OracleConnection()
            conn.ConnectionString = oradb
            Dim requeteProf As String = "SELECT COUNT DISTINCT(nomProf) FROM prof"
            Dim requeteClasse As String = "SELECT COUNT DISTINCT(nomClasse) FROM Classe"
     
            Dim orclCommand As New OracleCommand(requeteProf, conn)
            Dim orclCommand2 As New OracleCommand(requeteClasse, conn)
     
            'conn.Open()
            'définition de la requete sql
     
            Dim MonDataSet As New DataSet
     
            Dim mondataSet2 As New DataSet
     
     
            'Mon adapter recupere les données de ma requete
            'ici sql est ta requete sql et conn est ta connexion oracle
            Dim MonAdapter As New OracleDataAdapter(requeteProf, conn)
            Dim monadapter2 As New OracleDataAdapter(requeteClasse, conn)
     
            'que j'insere dans mon dataset
            MonAdapter.Fill(MonDataSet, "prof")
            monadapter2.Fill(mondataSet2, "classe")
            If mondataSet2.Tables("classe").Rows.Count > 0 Then
                Dim Matable2 As New DataTable
                Matable2 = mondataSet2.Tables("classe")
                AjoutEleve.ShowDialog()
            Else
                MessageBox.Show("Attention, il n'y a pas de classes enregistrées. L'ajout d'un élève est donc impossible")
            End If
            If MonDataSet.Tables("prof").Rows.Count > 0 Then
                Dim Matable As New DataTable
                Matable = MonDataSet.Tables("prof")
                AjoutEleve.ShowDialog()
            Else
                MessageBox.Show("Attention, il n'y a pas de profs enregistrés. L'ajout d'un élève est donc impossible")
            End If
     
     
        End Sub
    l'appli plante et j'obtiens un message d'erreur sur
    Dim conn As New OracleConnection()
    de mon sub Ajout_Eleve avec toujours le même message
    La référence ...
    Une idée ? :/

  19. #19
    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
    Question : utilises tu le provider Microsoft pour Oracle ou celui de Oracle ?

  20. #20
    Membre éclairé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Mai 2010
    Messages
    347
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2010
    Messages : 347
    Par défaut
    Euh joker ?
    Non sérieusement, aucune idée. J'ai simplement installé ma base, configuré l'utilisateur gestionMatiere et commencé à coder mon programme.

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. Réponses: 1
    Dernier message: 28/03/2008, 01h44
  2. acceder a une base de donnee oracle par vb.net
    Par khayate dans le forum Oracle
    Réponses: 2
    Dernier message: 28/02/2008, 10h45
  3. Connexion en ASP.NET à une base Oracle 9i
    Par DJuL- dans le forum Accès aux données
    Réponses: 3
    Dernier message: 12/07/2007, 10h49
  4. connection a une base oracle avec vb.net
    Par khayate dans le forum VB.NET
    Réponses: 5
    Dernier message: 11/05/2007, 16h45
  5. Réponses: 4
    Dernier message: 24/02/2006, 10h48

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