Effectuer un Ajout dans un table avec du code

CleemS Messages postés 19 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 10 juin 2008 - 3 mars 2008 à 17:02
CleemS Messages postés 19 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 10 juin 2008 - 10 juin 2008 à 18:29
Bonjour à tous !

Je croyais avoir trouvé l'astuce pour ajouter une ligne dans une table de ma Base de Données (MySQL) avec du code, mais apparemment c'est pas. =/

Voici le code que j'utilise, et qui donc, ne marche pas ^^ :

                Db.MySQLQuery("INSERT INTO `recette`(`Date_Rec`, `Lib_Rec`, `Montant_Rec`) VALUES ('" + DateTimePicker1.Value + "', '" + TextBox1.Text + "', '" + TextBox2.Text + "');")

En sachant que :

    Dim Db As Cl_MySQL

Et ma classe Cl_MySQL, du moins la partie qui nous intéresse ici :

    Function MySQLQuery(ByVal Query As String)
        Dts.Clear()
        Try
            Requete = Query
            HostConn.Open()
            'On execute la requête
            Dta = New MySqlDataAdapter(Requete, HostConn)
            Dta.Fill(Dts)
            Return Dts
            'On renvoi la table
        Catch myerror As MySqlException
            MessageBox.Show("Erreur de Connection à la Base de Données : " & myerror.Message)
            Return 0
        End Try
    End Function

Voili Voilou, donc pour une requête banale du Genre SELECT * FROM TABLE, sa marche très bien, mais pas pour une requête de type INSERT. Je ne comprends pas pourquoi, pourriez-vous m'éclairer s'il vous plait?

Merci pour la lecture,
CleeM.

5 réponses

cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 7
3 mars 2008 à 17:17
Salut

Enlève les ' en rouge, tu n'en as pas besoin dans cette partie de la requête.

et utilise des & à la place des +

 Db.MySQLQuery("INSERT INTO `recette`(`Date_Rec`, `Lib_Rec`, `Montant_Rec`) VALUES ('" & DateTimePicker1.Value & "', '" & TextBox1.Text & "', '" & TextBox2.Text & "');")

çà devrait marcher

@+
LIM
0
CleemS Messages postés 19 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 10 juin 2008 5
4 mars 2008 à 12:06
Salut, et merci de m'aider !

Je ne vois pas quels apostrophes je dois enlevé dans mon code. =/

Sinon j'ai remplacé tous les + par des &, et comme avant, quand j'ajoute une nouvelle ligne, aucune erreur, mais quand je vais vérifié dans la BDD, rien n'a été ajouté.

J'y pense sa peut venir d'autre chose, mais j'avais fait des tests et sa marchait, quand j'ajoute une nouvelle recette (prog' de compta ^^), je lance une MsgBox pour demander à l'utilisateur s'il souhaite vraiment l'ajouter, et je vérifie sa réponse comme ceci :

If DialogResult = 6 Then

En cherchant un peu c'est tout ce que j'ai trouvé, et après quelques tests sa m'avait l'air de fonctionner, mais peut être qu'il ne faut pas faire comme sa?
0
cs_lim Messages postés 329 Date d'inscription jeudi 20 novembre 2003 Statut Membre Dernière intervention 10 mai 2014 7
4 mars 2008 à 13:37
Re

Enlève les ' en rouge, tu n'en as pas besoin dans cette partie de la requête.

et utilise des & à la place des +

 Db.MySQLQuery("INSERT INTO `recette`(`Date_Rec`, `Lib_Rec`, `Montant_Rec`) VALUES ('" & DateTimePicker1.Value & "', '" & TextBox1.Text & "', '" & TextBox2.Text & "');")

J'ai grossi le texte c'est dans le
INSERT INTO Table(Champ1,Champ2) tu n'as pas besoin d'apostrophes.

Au lieu de la msgbox utilise la messagebox du .Net
Au niveau des boutons et de l'icon tu as plusieurs options
Et la réponse est écrite en clair Yes, No Cancel..... 

Dim reponse
As DialogResultreponse = MessageBox.Show(

"Texte du message",
"Titre de la messagebox", MessageBoxButtons.YesNo, MessageBoxIcon.Information)

If reponse = Windows.Forms.DialogResult.Yes
Then

'Ton code

End
If
@+
LIM
0
cs_Berurier Messages postés 31 Date d'inscription lundi 23 décembre 2002 Statut Membre Dernière intervention 28 juin 2013
16 mars 2008 à 21:25
Salut,
Ta fonction MySQLQuery te permet de charger une table dans un dataset  mais ne te permet pas de mettre à jour la table. il te faudrait créer les commandes.

Utilises une autre fonction comme celle-ci :

Public Function ExecuteCommande(ByVal Requete As String, Optional ByVal Ajout As Boolean = False) As Long


       conn  correspond à hostconn

        Dim MyCmd As New MySql.Data.MySqlClient.MySqlCommand(Requete, conn)

        If Microsoft.VisualBasic.Right(Requete, 1) <> ";" Then Requete = Requete & ";"  
       
        If Connection("ExecuteCommande") = True Then   ' Si connection OK
            Try
                If Ajout Then                    Requete Requete & "SELECT LAST_INSERT_ID();"  >  SELECT LAST_INSERT_ID() va te retourner le dernier index ce qui te permetrra de savoir que la commande à réussi.
                     executecommande= MyCmd.ExecuteScalar   
                Else               
                   executecommande=  MyCmd.ExecuteNonQuery   
                End If
           
            Catch ex As System.Net.Sockets.SocketException
              ' à gerer
            Catch ex As MySql.Data.MySqlClient.MySqlException
               ' a gérer
            Finally
                MyCmd.Dispose()
             
            End Try
        End If
    End Function

En espérant t'avoir aidé ....

A +

On s'en fout que les poulets soient élévés en plein air , de toutes facons , on ne mange pas les poumons....
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
CleemS Messages postés 19 Date d'inscription vendredi 4 janvier 2008 Statut Membre Dernière intervention 10 juin 2008 5
10 juin 2008 à 18:29
3mois plus tard me revoilà sur mon programme, et oui l'exam des PTI c'est dans 1semaine !!! =/

Merci pour vos réponses Berurier & lim.

En effet on dirait que ma fonction MySQLQuery ne permet pas l'ajout, car aucun message d'erreur mais aucun ajout aussi.
Je suis en train d'essayer ta Fonction Berurier, mais il n'y a qu'un problème :

If Connection("ExecuteCommande") = True Then   ' Si connection OK

Le 'Connection' n'est pas reconnu par VB et je ne sais que mettre, le HostConn ne marche pas non plus.

En espérant que tu sois toujours sur le forum! =)
0
Rejoignez-nous