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 :

Erreur d'ajout, modification, suppression de données dans une bdd Mysql à partir d'une application VB.net


Sujet :

VB.NET

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juin 2010
    Messages : 257
    Points : 102
    Points
    102
    Par défaut Erreur d'ajout, modification, suppression de données dans une bdd Mysql à partir d'une application VB.net
    Bonjour,
    j'ai un problème sur ce code, j'ai une exception:

    La référence d'objet n'est pas définie à une instance d'un objet.
    Donc en gros il faut rajouter un new mais je vois pas où en l'occurrence.
    Si quelqu'un peut m'aider je vous remercie d'avance.

    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
    Dim NewLigne As DataRow
                'Création d'une nouvelle ligne dans la table 
                NewLigne = MonDataSet.Tables("utilisateurs").NewRow
                'remplissage des champs
                NewLigne(0) = TextBox1.Text
                NewLigne(1) = TextBox2.Text
                NewLigne(2) = TextBox3.Text
                NewLigne(3) = TextBox4.Text
                'Ajout de la nouvelle ligne créer précédement à la table
                MonDataSet.Tables("utilisateurs").Rows.Add(NewLigne)
     
                'mise a jour avec la base
     
                Dim CmdBuild As MySqlCommandBuilder
                CmdBuild = New MySqlCommandBuilder(MonRemplisseur)
                MonRemplisseur.InsertCommand = CmdBuild.GetInsertCommand()
                MonRemplisseur.Update(MonDataSet, "recrutement")
    L'erreur se trouve sur cette ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    NewLigne = MonDataSet.Tables("utilisateurs").NewRow
    Merci d'avance !!

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 310
    Points : 347
    Points
    347
    Par défaut
    Sur la ligne du dessus, tu déclares une ligne sans l'instancier

    donc le code est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim NewLigne As New DataRow

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juin 2010
    Messages : 257
    Points : 102
    Points
    102
    Par défaut
    j'avais déjà tenté et le debug ma mit ça :

    System.Data.DataRow.Protected Friend Sub New(builder As System.Data.DataRowBuilder)' n'est pas accessible dans ce contexte, car il est 'Protected Friend'
    merci de ton aide

  4. #4
    Expert confirmé
    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 : 41
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    La méthode NewRow d'un dataset crée elle-même l'instance de la nouvelle DataRow.

    Donc il reste 2 possibilités :

    Soit c'est le DataSet qui n'est pas instancié, soit c'est la DataTable qui se trouve dans le DataSet.

    Il faudrait plus de code et pas uniquement cette partie là je pense.
    Kropernic

  5. #5
    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 : 42
    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
    Points : 39 749
    Points
    39 749
    Par défaut
    Citation Envoyé par sebnantes Voir le message
    Sur la ligne du dessus, tu déclares une ligne sans l'instancier

    donc le code est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Dim NewLigne As New DataRow
    C'est initialisé à la ligne du dessous, donc ça servirait à rien de faire un new... de toutes façons la classe DataRow n'a pas de constructeur sans paramètre

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Août 2008
    Messages
    310
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Août 2008
    Messages : 310
    Points : 347
    Points
    347
    Par défaut
    Ok, grosse erreur de ma part...je manipule les DataRows donc je ne connais pas plus que ça...

  7. #7
    Expert confirmé
    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 : 41
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    C'est bien ce que je disais (je parle du post de tomlev bien sûr)
    Kropernic

  8. #8
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juin 2010
    Messages : 257
    Points : 102
    Points
    102
    Par défaut
    Voici les déclarations que que j'ai faites dans un module :

    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
     
    Imports MySql.Data.MySqlClient
     
        Public MaCommandeSpecialRequete As New MySqlCommand
     
        Public myReader As MySqlDataReader
     
        Public Bdd As New MySql.Data.MySqlClient.MySqlConnection
     
        Public ReqSql As String
     
        Public MonDataSet As New DataSet
     
        Public MonRemplisseur As MySqlDataAdapter
        Public Matable As New DataTable

    Merci de votre aide

  9. #9
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    L'instanciation de la datarow est bonne.

    Je paris tout que c'est la table "utilisateur" qui n'appartient pas au dataset (ou du moins qu'elle n'a pas encore été créer.)

    Fais tu un:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonDataset.Tables.add("utilisateur")
    et pour les colonnes aussi?

    Pour vérifier, mets un point d'arrêt au début de la fonction, qui tu y es, va sur le dataset ou ouvre une fenêtre espion et tape:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonDataset.Tables("utilisateur").rows.count
    Si ça te dis qu'il y a nothing ou "reference d'objet n'est pas defini blablabla..." , c'est ça.
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juin 2010
    Messages : 257
    Points : 102
    Points
    102
    Par défaut
    Quand tu dis ouvrir une fenetre espion dans le dataset, deja comment aller dans le dataset vu que je n'est pas d'objet dataset sur la composition du projet a droite ??

    donc si tu peux m'expliquer se serai sympa !!

    Merci de ton aide !

  11. #11
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Tu mets un point d'arret sur ta première ligne:

    Dim NewLine = Datarow

    (Juste au cas ou, pour mettre un point d'arret, tu clique gauche à gauche de la ligne de code (a gauche de la numerotation de ligne)).

    Tu lances ton soft comme d'habitude... que le code arrive a ton pointd'arret... la ligne apparait en jaune...

    A ce moment, tu surlignes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonDataset.Tables("utilisateur")
    tu cliques droit et tu fais Ajouter un espion ou un espion express... Dans les deux cas, tu as la possibilité de "tapé" le nom d'un objet avec ses propriétés, et il t'affiche ce qu'il y a dedans...

    donc tu peux faire:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonDataset.Tables.Count
    ou

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    MonDataset.Tables("utilisateur").rows.Count
    si tu utilise un espion normal, tu peux "dérouler" les propriétés
    Dans tous les cas... si la table "utilisateur" n'a jamais été ajouter au dataset... une erreur sera afficher -> ce qui veut bien dire que la reference d'objet ne blablabla
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juin 2010
    Messages : 257
    Points : 102
    Points
    102
    Par défaut
    bonjour,

    La réponse que j'ai eu avec l'espion :

    MonDataset.Tables.Count -> valeur: 0 -> type: integer
    Mais c'est tout !

    avec MonDataset.Tables("utilisateur").rows.Count j'ai obtenu cela:

    MonDataset.Tables("utilisateur").rows.Count L'objet référencé a la valeur 'Nothing'. Integer
    donc franchement je sais pas ce qui cloche apparemment il n'y a pas de lignes dans ma table alors qu'il y en a 2 au moins !!

    Mais le truc c'est que notre base est sur un serveur local donc apparamment on doit déclarer un nouveau user pour que l'appli puisse insérer !!

    Je te tiens au courant merci de ton aide !

  13. #13
    Expert confirmé
    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 : 41
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Il n'y a pas de DataTable dans ton DataSet.
    Kropernic

  14. #14
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Citation Envoyé par kek's Voir le message

    MonDataset.Tables.Count -> valeur: 0 -> type: integer
    Vaut dire que ton dataset ne contient 0 datatable.


    Citation Envoyé par kek's Voir le message

    MonDataset.Tables("utilisateur").rows.Count L'objet référencé a la valeur 'Nothing'.
    Montre bien que la datatable utilisateur dans le dataset est rien. La datatable n'existe pas !

    Donc on en viens au point déterminant... Tu travail sur cette datatable... mais quand est ce que tu la remplis ?
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  15. #15
    Expert confirmé
    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 : 41
    Localisation : Belgique

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

    Informations forums :
    Inscription : Juillet 2006
    Messages : 3 932
    Points : 4 239
    Points
    4 239
    Par défaut
    Je pense qu'il serait utile de d'abord lire le tutoriel de Mr. Lasserre au sujet des bases de données avec ADO.NET avant d'aller plus loin.
    Kropernic

  16. #16
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Ton dataset contient 0 datatable, donc forcement il n'a aucune ligne dans la table "utilisateur" qui est pour l'instant imaginaire.

    Je precise bien pour ne pas que tu perdes trop de temps en recherches... ce n'est pas un problème utilisateur ni serveur ou autre...

    Le problème viens du programme....

    Tu dis que la datatable contient deux lignes... tu veux dire, la table en base de données?

    Peut être remplis tu un dataset mais que après tu travail sur un autre dataset.

    Faudrait que tu montres le code dans lequel tu remplis le dataset (ou la datatable du dataset)
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juin 2010
    Messages : 257
    Points : 102
    Points
    102
    Par défaut
    En fait il faudrai que j'y aille chercher les données de cette table avec un select par exemple et que ensuite j'ajoute mon occurrence avec un insert into ??

    En gros c'est ca ?

  18. #18
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Ben je ne sais pas (personne je pense) ce que tu veux faire.

    Consulter une table de ta base de données... ajouter des données dans ta base de données?

    Dis nous donc ce que tu veux faire, et on te redirigera vers un cours adéquat.
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

  19. #19
    Membre régulier
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    257
    Détails du profil
    Informations personnelles :
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Juin 2010
    Messages : 257
    Points : 102
    Points
    102
    Par défaut
    je veux juste faire une insertion de données dans ma base de données sur MySQL server

  20. #20
    Membre émérite Avatar de mactwist69
    Homme Profil pro
    Développement VB.NET
    Inscrit en
    Janvier 2007
    Messages
    1 707
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Saône et Loire (Bourgogne)

    Informations professionnelles :
    Activité : Développement VB.NET
    Secteur : Industrie

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Points : 2 528
    Points
    2 528
    Par défaut
    Et bien une simple requête peut suffire avec un objet command et ExecuteNonQuery:

    GoTo :

    http://plasserre.developpez.com/cour...ees1#LXVII-B-3

    Et navigue un peu...

    Après tu peux quand même utiliser un Dataset, mais a ce moment, commence la lecture au début.
    L'avenir appartient à ceux... dont les ouvriers se lèvent tôt. (Coluche)

Discussions similaires

  1. [AC-2003] ajout et suppression de données dans 2 tables différentes
    Par cjay974 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 23/06/2015, 15h17
  2. [AC-2007] Ajout et suppression de données dans un sous-formulaire
    Par crisjax dans le forum IHM
    Réponses: 5
    Dernier message: 12/04/2010, 22h31
  3. Réponses: 4
    Dernier message: 05/07/2008, 20h06
  4. Recherche classe pour ajout/modif/suppression d'articles dans une base de donnée
    Par will89 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 02/02/2007, 11h59

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