Auteur de questions
ajouter des données dans une base de données SQL avec Visual BAsic Express 2010

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
- Type modifié Teodora SharkovaModerator samedi 6 août 2016 23:28
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, -
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