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

Windows Forms Discussion :

Aide conception update et verification duplicat [Débutant]


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations forums :
    Inscription : Juillet 2003
    Messages : 323
    Par défaut Aide conception update et verification duplicat
    Salut !
    Je voulais savoir comment faire un update.
    J'ai pour exemple une table "Produit" avec Colonnes "nom, foto"

    Au moment de lancer le update il me vérifie qu'il n'y a pas de produit avec le meme nom.
    Sauf que que veux changer la photo du produit et évidement comme le produit existe il me le dit.

    Y'a t'il moyen de contourne ce problème ?

    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
    29
    If TextBox7.Text = 1 Then
                    'Guardar Imagen'
                    Dim mstream As New System.IO.MemoryStream()
                    PictureBox1.Image.Save(mstream, System.Drawing.Imaging.ImageFormat.Png)
                    Dim arrImage() As Byte = mstream.GetBuffer()
                    mstream.Close()
                    'Guardar Imagen'
                    If READER.HasRows Then
                        MsgBox("Product Duplicated !", MsgBoxStyle.Critical)
                        Me.Show()
                        MysqlConn.Close()
                    Else
                    Try
                        MysqlConn.Open()
                        COMMAND.Connection = MysqlConn
                        COMMAND.CommandText = "update product set 
                                name=@Value3, 
                                foto=@foto
                                where id = '" & TextBox1.Text & "'"
                        COMMAND.Parameters.AddWithValue("@Value3", If(String.IsNullOrEmpty(TextBox2.Text), DBNull.Value, TextBox2.Text))
                        COMMAND.Parameters.AddWithValue("@foto", arrImage)
                        READER = COMMAND.ExecuteReader
                        MessageBox.Show("Datos Guardados")
                        MysqlConn.Close()
                    Catch ex As Exception
                        MessageBox.Show(ex.Message)
                    Finally
                        MysqlConn.Dispose()
                    End Try

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Par défaut
    Bonjour,

    La requête qui teste l'existence d'un produit de même nom doit aussi tester que l'Id trouvé est différent de ton Id produit que tu veux modifier. Sinon, c'est que tu es sur le même produit et que tu peux le modifier.

    Petite remarque : Dans ta requête d'update, tu mélanges requête paramétrée et concaténation de chaîne. Utilise des paramètres partout afin d'éviter l'injection SQL !
    Petite remarque bis : Evite les Textbox1 et autres PictureBox1. Affecte des noms explicites à tes controls faute de quoi le programme deviendra vite inmaintenable.

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations forums :
    Inscription : Juillet 2003
    Messages : 323
    Par défaut
    Citation Envoyé par ebastien Voir le message
    Petite remarque : Dans ta requête d'update, tu mélanges requête paramétrée et concaténation de chaîne. Utilise des paramètres partout afin d'éviter l'injection SQL !
    Meme avec un programme VB on peux faire de l'injection SQL ?

    Citation Envoyé par ebastien Voir le message
    Petite remarque bis : Evite les Textbox1 et autres PictureBox1. Affecte des noms explicites à tes controls faute de quoi le programme deviendra vite inmaintenable.
    Plus tard une fois que cela fonctionne correctement.

    Sinon, je vais tester cela de suite. Merci.

  4. #4
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    Citation Envoyé par superthx Voir le message
    Meme avec un programme VB on peux faire de l'injection SQL ?[..]
    Si tu pars du principe qu'une utilisation frauduleuse de ton appli peut être faite alors il faut s'en protéger.
    Et oui, l'injection SQL est tout à fait possible dans ton programme.
    Si dans TextBox1 je saisis '; DROP TABLE product; je pense que tu vas pas trop apprécier ce qu'il va se passer ^^

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Juillet 2003
    Messages
    323
    Détails du profil
    Informations personnelles :
    Localisation : Espagne

    Informations forums :
    Inscription : Juillet 2003
    Messages : 323
    Par défaut
    Citation Envoyé par jopopmk Voir le message
    Si dans TextBox1 je saisis '; DROP TABLE product; je pense que tu vas pas trop apprécier ce qu'il va se passer ^^
    Je demanderai plus tard comment faire alors.

    Par contre je reviens sur mon update.

    Je bloque sur la commande Mysql. Car je sais pas comment faire pour qu'il verifie si cs valeurs existent.
    Cela doit bloquer sur IF READER.HasRows. Car si je comprend bien, si il ya des colonnes il dit que "Product Duplicated !".
    Alors comment le faire verifier ? Je tourne un peux en rond.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    COMMAND.CommandText = "select * from product where name <> '" & TextBox2.Text & "' and id <> '" & TextBox1.Text & "'"
                    READER = COMMAND.ExecuteReader
                    If READER.HasRows Then
                        MsgBox("Product Duplicated !", MsgBoxStyle.Critical)
    Je vais tester If READER.HasRows >0

  6. #6
    Membre Expert Avatar de jopopmk
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mars 2011
    Messages
    1 856
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mars 2011
    Messages : 1 856
    Par défaut
    On va commencer par préciser ton besoin : que veux-tu faire exactement ?
    Ensuite il faut la DESC de la table (ou son CREATE) pour connaitre les contraintes que tu as mises en place (PRIMARY, UNIQUE, FOREIGN ...).

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

Discussions similaires

  1. aide conception image + texte
    Par maysa dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 29/11/2007, 13h37
  2. Aide conception Dataset et performance
    Par chnew dans le forum ASP.NET
    Réponses: 1
    Dernier message: 29/06/2007, 09h59
  3. Aide conception diagramme de classes Projet Web
    Par alves.seb dans le forum Diagrammes de Classes
    Réponses: 9
    Dernier message: 12/06/2007, 14h29
  4. [Conception] Update records écrasent plusieurs lignes
    Par JLDR69 dans le forum PHP & Base de données
    Réponses: 9
    Dernier message: 17/09/2006, 19h13

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