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 :

insertion dans une base donnee


Sujet :

VB.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 49
    Par défaut insertion dans une base donnee
    bonjour,
    je devellope une application en vb.net avec base MySql. Tout (ou presque) se passe bien jusqu'au moment ou je doit ajouter des donnée dans la bd..
    la chaine de connexion est bonne donc c'est ou un probleme de SQL ou de 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
    Dim HostConn As New MySqlConnection 
    Dim dtr As DataRow 
    Dim da As MySqlDataAdapter 
    Dim cmdb As MySqlCommandBuilder 
    Dim dst As New DataSet 
     
    da = New MySqlDataAdapter("SELECT * FROM eleve e,famille f WHERE e.idfamille=f.idfamille", HostConn) 
    da.Fill(dst, "famille") 
    dtr = dst.Tables("famille").NewRow 
    dtr("situationFamille") = Cbsituationfam.Text 
    dtr("nommartialP") = Txtnompere.Text 
    dtr("prenomP") = Txtprenompere.Text 
    dtr("nomNaissP") = Txtnomnaissancepere.Text 
    dtr("nomEnfant") = Frmeleve.Txtnom.Text 
    dst.Tables("famille").Rows.Add(dtr) 
    cmdb = New MySqlCommandBuilder(da) 
    da.Fill(dst, "famille") 
    da.Update(dst, "famille") 
     
    famille (idfamille,situationFamille,nommartialP, prenomP,nomNaissP) 
    enfant (idenfant,nomEnfant, #idfamille)
    le update ne passe pas
    La référence d'objet n'est pas définie à une instance d'un objet. NullReferenceExeption
    Ce code c'est quelques jours de test pour un insertion mais apparement quand j'ai commencer a chercher ici, je me suis apercu que le select ne doit concerne qu'une seule table donc comment faire pour inserer toute les info dans toute les tables au meme identifiant
    merci d'avance

  2. #2
    Membre éclairé Avatar de sihammaster
    Webmaster
    Inscrit en
    Mai 2009
    Messages
    256
    Détails du profil
    Informations professionnelles :
    Activité : Webmaster
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2009
    Messages : 256
    Par défaut
    Bonjour,
    Alors essayer de corriger ton code comme ca:
    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
    
    dim da As MySqlDataAdapter 
    Dim cmdb As MySqlCommandBuilder 
    Dim dst As New DataSet 
    
    da = New MySqlDataAdapter("SELECT * FROM eleve e,famille f WHERE e.idfamille=f.idfamille", HostConn) 
    da.Fill(dst, "famille") 
    
    dtr = dst.Tables("famille").NewRow 
    dtr("situationFamille") = Cbsituationfam.Text 
    dtr("nommartialP") = Txtnompere.Text 
    dtr("prenomP") = Txtprenompere.Text 
    dtr("nomNaissP") = Txtnomnaissancepere.Text 
    dtr("nomEnfant") = Frmeleve.Txtnom.Text 
    dst.Tables("famille").Rows.Add(dtr) 
    cmdb = New MySqlCommandBuilder(da) 
    da.Update(dst, "famille")
    da.Fill(dst, "famille") 
     dst.Clear()
     da.Fill(dst, "famille")   'pour recharger le dataset par les nouvelles données

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 49
    Par défaut
    bonsoir,

    tout d'abord je tiens à vous remercier d'avoir pris le temps de répondre

    j'ai modifié le code comme vous me l'aviez conseillé et toujours la même erreur sur le update. J'ai fait un test avec une requête "SELECT * FROM famille" et ça marche très bien mais bon ce n'est pas vraiment ce que je veux.
    donc si vous aviez une idée...

    merci d'avance

  4. #4
    Membre Expert
    Avatar de Sehnsucht
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Octobre 2008
    Messages
    847
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Lot et Garonne (Aquitaine)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Octobre 2008
    Messages : 847
    Par défaut
    Bonsoir, ceci n'est qu'un "bête" (c'est toujours facile à dire ) de SQL, lors de ta requete, tu effectues une jointure (au passage, avec une méthode archaïque qu'il vaut mieux éviter ) entre deux tables, et tu souhaites récupérer tout (SELECT *).

    Or récupérer tout, signifie que la "table résultat" aura les colonnes de la première table ET les colonnes de la seconde donc quand tu veux charger ton dataSet qui a le schéma de Famille en tête il ne reconnait pas ce que tu lui propose je pense.

    Tente voir ceci plutôt (avec au passage la "bonne" façon de faire une jointure)
    NB (peut être que la syntaxe ne sera pas 100% compatible avec mySQL j'avoue que je m'en sers peu, mais normalement c'est normalisé)

    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT
        f.*
    FROM
        eleve e
            INNER JOIN famille f
            ON e.idfamille=f.idfamille

    En espérant avoir été utile

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 49
    Par défaut
    merci de la reponse
    mais avec ce code en SQL il ne reconnait meme plus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    dtr("nomEnfant") = Frmeleve.Txtnom.Text
    avec l'erreur
    La colonne 'nomEnfant' n'appartient pas à la table famille.
    et lorsque j'essaye d'ajouter dans le select e.* on en revient a l'erreur precedente sur le update
    voila si vous aviez d'autre idée je suis preneur
    merci

  6. #6
    Membre Expert 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 : 41
    Localisation : France, Saône et Loire (Bourgogne)

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

    Informations forums :
    Inscription : Janvier 2007
    Messages : 1 707
    Par défaut
    Deux petites choses:

    Au lieu de faire Select *, je conseil fortement d'écrire le nom des colonnes... au moins tu seras sur de ce que tu ramènes et de leur nom.

    Puis au lieu d'utiliser NewRow, Tu peux faire directement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    me.dst.Tables("famille").rows.add(Var1,var2,var3 etc...)

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    49
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 49
    Par défaut
    bonsoir,
    merci pour la reponse.
    J'ai reussi a trouve une solution sur le tchat. Je doit cette reponse a Sehnsucht (et le truc bien c'est qu'elle marche )
    Il suffit juste de separer toute les requetes.

    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
     
     
    da = New MySqlDataAdapter("SELECT * FROM famille ", HostConn) 
    da.Fill(dst, "famille") 
     
    dtr = dst.Tables("famille").NewRow 
    dtr("situationFamille") = Cbsituationfam.Text 
    dtr("nommartialP") = Txtnompere.Text 
    dtr("prenomP") = Txtprenompere.Text 
    dtr("nomNaissP") = Txtnomnaissancepere.Text 
     
     
    dst.Tables("famille").Rows.Add(dtr) 
    cmdb = New MySqlCommandBuilder(da) 
    da.Update(dst, "famille")
    da.Fill(dst, "famille") 
     dst.Clear()
     da.Fill(dst, "famille")
     
    dta = New MySqlDataAdapter("SELECT * FROM eleve", HostConn) 
    dta.Fill(dsst, "eleve") 
     
    dtr = dsst.Tables("eleve").NewRow 
    dtr("nomEnfant") = Frmeleve.Txtnom.Text
    dst.Tables("eleve").Rows.Add(dtr) 
    cmdb = New MySqlCommandBuilder(dta) 
    dta.Update(dst, "eleve")
    dta.Fill(dsst, "eleve")
    voila j'espere que ce code pourra aider d'autre personne
    a bientot

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 25/05/2009, 15h58
  2. insertion dans une base de données
    Par youness_ka dans le forum ASP.NET
    Réponses: 1
    Dernier message: 31/07/2007, 14h51
  3. insertion dans une base de donnee
    Par killer_instinct dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 04/05/2007, 08h26
  4. Réponses: 1
    Dernier message: 11/09/2006, 10h45
  5. Réponses: 10
    Dernier message: 24/02/2005, 14h57

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