none
ajouter des données dans une base de données SQL avec Visual BAsic Express 2010 RRS feed

  • Discussion générale

  • Bonjour,

    je viens vous demander un peu d'aide concernant l'ajout de données dans une base de données. Après plusieurs recherches, j'ai trouvé comment créer, ouvrir et fermer une base de données. Par contre, je n'arrive pas a faire des ajouts dans ma base.

    Est ce que l'un(e) d'entre vous pourrait me donner un coup de main ?

    Les données sont récupérées dans des textbox qui sont dans le même formulaire que celui du traitement de la base de données.

    voila comment se passe l'ajout des données :

    - l'utilisateur rentre les informations dans des textbox puis clique sur un bouton

    - l'action sur ce bouton enregistre les données saisies dans la base de données.

    pour le moment, je ne gère qu'une seule table (alors qu'il doit y en avoir plusieurs) et il n'y a aucune vérification quand aux valeurs saisies (certains champs seront obligatoires)

    voici mon code qui gère la base de données au niveau de l'ajout de données :

     Private Sub saisiebdd()
            'ouverture de la connexion a la base de données
            Dim Connexion As New SqlConnection("data source=localhost;initial catalog=bd;integrated security=true")
            Try
                Connexion.Open()
            Catch ex As Exception
                Console.WriteLine(ex.Message)
            End Try
    
            'insertion des valeurs dans la base de données
            Dim Requete As String = "Insert into Motrice (mImmatriculation, mNom, mMode, mEpoque, mLongueurHT, mLongueur, mPoids, mReversible, mFeuxAvant, mFeuxArriere, mRoulnet, mTensionDemarrage, mSiteInternet, mId) values (saisie_immatriculation.text, saisie_nom.Text, '', '', '', saisie_longueur.text, saisie_poids.text, '', '', '', '', '', '', '')"
    
            Dim Commande As New SqlCommand(Requete, Connexion)
            Try
                Commande.ExecuteNonQuery()
            Catch ex As Exception
                Console.WriteLine(ex.Message)
            End Try
    
            'fermeture de la connexion de la base de données
            Commande.Dispose()
            Connexion.Close()
    
        End Sub

    Est ce que l'ouverture de la base est bonne ? La gestion de l'ajout est elle la meilleure ?

    Je vous remercie pour l'aide que vous pourriez m'apporter

    Cordialement

    Lunick

    samedi 23 juillet 2016 08:13

Toutes les réponses

  • Bonjour Lunick,

    Quelques petites choses à modifier :

    Déjà, n'utiliser qu'un seul Try Catch et en mettant le Connexion.Dispose() dans un bloc Finally étant donné que la connexion doit être disposé quelque soit le résultat de la connexion.

    Try
        Connexion.Open()
    
        Connexion.Close()
    
    Catch ex As Exception
        Console.WriteLine(ex.Message)
    Finally
        Connexion.Dispose()
    End Try

    Ensuite, tout va se jouer dans le bloc Try entre Connexion.Open() et Connexion.Close().

    [...]
    Try
        Connexion.Open()
    
        Dim Requete As String = "INSERT INTO Motrice (mImmatriculation, mNom, mMode, mEpoque, mLongueurHT, mLongueur, mPoids, mReversible, mFeuxAvant, mFeuxArriere, mRoulnet, mTensionDemarrage, mSiteInternet, mId) VALUES (saisie_immatriculation.text, saisie_nom.Text, '', '', '', saisie_longueur.text, saisie_poids.text, '', '', '', '', '', '', '')"
    
        Dim Commande As New SqlCommand(Requete, Connexion)
    
        Commande.ExecuteNonQuery()
    
        Connexion.Close()
    
        Console.WriteLine("Les données ont été enregistrées !")
    
    Catch ex As Exception
    [...]

    Cordialement,

    dimanche 24 juillet 2016 07:47
  • Bonjour Arthur LeMeur,

    je vous remercie pour ce coup de pouce. J'ai effectué les changement dans mon code, mais il ressort une erreur que je n'arrive pas a corriger (j'en ai eu d'autres avant d'avoir celle ci que j'ai pu corriger) : 

    Échec de la conversion des données. [ OLE DB status value (if known) = 2 ]

    d'après ce que j'ai pu comprendre au fil de mes lectures, ce serait un faute dans la syntaxe de ma requête, est ce vrai ? et si oui, où y a t il une erreur ?

    voici ma requête :

      Dim Requete As String = "INSERT INTO motrice (mImmatriculation, mNom, mMode, mEpoque, mLongueurHt, mLongueur, mPoids, mReversible, mFeuxAvant, mFeuxArriere, mRoulnet, mTensionDemarrage, mSiteInternet, mId) VALUES ('saisie_immatriculation.Text', 'saisie_nom.Text', '', '', '', 'saisie_longueur.Text', 'saisie_poids.Text', '', '', '', '', '', '', '')"

    autre question, qui pourrait peut être corriger cette erreur : comment faire pour récupérer la valeur saisie par un utilisateur dans un textbox pour l'intégrer dans une requête SQL ?

    Merci pour votre aide

    Bon dimanche

    Cordialement

    Lunick

    dimanche 24 juillet 2016 09:20