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

ASP.NET Ajax Discussion :

Valeur d un textbox


Sujet :

ASP.NET Ajax

  1. #1
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Points : 175
    Points
    175
    Par défaut Valeur d un textbox
    Bonjour j ai un textbox de type text et qui insere sa valeur dans la bd mais quand je met un apostrophe ridn ne passe pourquoi a votre avis .

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 208
    Points : 395
    Points
    395
    Par défaut
    Généralement lorsque l'on pose une question de ce genre, il est beaucoup plus facile d'obtenir des réponses en mettant du code.
    Par exemple comment tu récupère la valeur de ton textbox, comment tu insère cette valeur en base, etc...

    Sans ça, je vais juste lancer une idée : tu ne traite pas la chaine de caractères que tu récupère de ta textbox et tu essaie de l'insérer directement en base. L'apostrophe représentant généralement la fin d'une instruction pour les SGBD, ce dernier ne fait pas ce que tu attends (retourne une erreur non catché, ne fais rien, etc...)
    Regarde de ce côté la, ou montre nous du code

  3. #3
    Membre habitué
    Inscrit en
    Août 2008
    Messages
    1 596
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 1 596
    Points : 175
    Points
    175
    Par défaut
    merci pour votre reponse, voila ce que je fais :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
                string InsertQ = "INSERT INTO table VALUES('"
                    + nmStation.Text + "', '" + latitude.Text + "','" + longitude.Text + "','" + observ.Text.ToString() + "');";
                SqlCommand MyCmd = new SqlCommand(InsertQ, connection);
                MyCmd.ExecuteNonQuery();
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <p><label>Observations : </label></p>
    		  <p><asp:TextBox ID="observ" MaxLength="200" Rows = "10" Columns="10" Height="50px"  TextMode="MultiLine" runat="server" CssClass="input"></asp:TextBox></p>
    comme j'ai signalé il me bloque quand je saisie une chaine avec "'", tel que : "...n'a pas "

  4. #4
    Membre averti
    Homme Profil pro
    Inscrit en
    Avril 2009
    Messages
    208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Avril 2009
    Messages : 208
    Points : 395
    Points
    395
    Par défaut
    A priori ça confirme ce que je pensais.
    Mais c'est quelque chose d'assez courant et il est plus intéressant pour toi de savoir corriger ce genre d'erreur de toi même.
    Donc si tu le veux bien, on va y aller pas à pas.

    Il faut que tu décompose les différentes actions de ton code :
    1. Tu récupère les valeurs de plusieurs textbox
    2. Tu crée une chaine de caractères, qui est la concaténation des valeurs récupérées précédemment
    3. Tu crée une requête SQL avec la chaine de caractères et une variable de connexion
    4. Tu exécute ta requête


    On va donc vérifier que chaque étape s'effectue correctement.

    1) En partant du principe que tu connais le fonctionnement du débuggeur de Visual Studio, met un point d'arrêt au niveau de ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    string InsertQ = "INSERT INTO table VALUES('"
                    + nmStation.Text + "', '" + latitude.Text + "','" + longitude.Text + "','" + observ.Text.ToString() + "');";
    et regarde la valeur de chaque textbox.

    2) Si tout est conforme à tes attentes, avance d'un pas et regarde la valeur de requête SQL, c'est à dire de ta chaine "InsertQ".
    Quand tu travail avec une base de données, le mieux pour débugger est de prendre ta requête et de l'exécuter directement sur ta base, pour voir si elle marche bien (en environnement de test c'est mieux )
    Donc tu prends la valeur de "InsertQ", tu l'exécute sur ta base. Cela donne t il le résultat attendu ?

    3) Si tout est bon jusque la, le problème peut venir de tes informations de connexions. On avance encore d'un pas avec le débuggeur et on vérifie la variable "connection". Vérifie que tout est bon.
    Avance encore d'un pas pour t'assurer qu'il n'y a pas d'erreur dans la création de ta commande SQL (erreur de syntaxe au niveau des arguments, etc...).
    As tu bien ouvert ta connexion en amont ?

    4) Si toutes les étapes précédentes sont OK, il ne te reste plus qu'a tester l'exécution en elle même. Voir si le débuggeur te retourne quelque chose.



    J'ai fais exprès de détailler la vérification pour chaque étapes pour te montrer les automatismes à avoir pour trouver d'où vient le problème.
    Mais vu que tu explique que cela marche s'il n'y a pas d'apostrophes dans ton textbox, tu peux facilement isoler l'étape qui doit être en cause.

    Dis moi si cela t'aide ou si tu ne vois toujours pas d'où peux venir le problème.

  5. #5
    Membre éprouvé
    Homme Profil pro
    Architecte technique
    Inscrit en
    Septembre 2005
    Messages
    462
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Maine et Loire (Pays de la Loire)

    Informations professionnelles :
    Activité : Architecte technique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 462
    Points : 1 056
    Points
    1 056
    Par défaut
    Le message d'Arnaud est parfait et explique clairement la méthodologie que l'on devrait toujours appliquer pour la résolution d'un problème.

    Mais ton problème ici concerne bien les "quotes" (').

    Il faut vraiment éviter(pour ne pas dire qu'il ne faut pas) d'écrire des requêtes en dur (SELECT * FROM matable WHERE macolonne='valeurColonne')
    Des qu'il y aura une quote tu rencontrera des problèmes et d'Injection_SQL

    Il y a la solution de doubler ou tripler les quotes (je ne sais plus et je n'utilise plus cette façon de faire depuis très très très longtemps)

    Voici un tutoriel pour utiliser les requêtes paramétrées :
    Sql Parameter
    Avec cette solution plus besoin de s'occuper des quotes.

  6. #6
    Membre du Club
    Homme Profil pro
    dev
    Inscrit en
    Mai 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : dev
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2007
    Messages : 73
    Points : 69
    Points
    69
    Par défaut
    Bonjour
    Perso je préfère utiliser les parameters

    exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim cmd As SqlCommand = New SqlCommand("SELECT * FROM COMMANDE WHERE CMD_ID = @CdeId", conn)
     cmd.Parameters.Add("@CdeId", SqlDbType.UniqueIdentifier).Value = CdeId

  7. #7
    Membre averti

    Développeur .NET
    Inscrit en
    Juillet 2008
    Messages
    176
    Détails du profil
    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Juillet 2008
    Messages : 176
    Points : 310
    Points
    310
    Par défaut
    Salut,

    Il faut IMPERATIVEMENT ne jamais concaténer des valeurs provenant de saisie utilisateur. Cela ouvre la porte à des injections SQL.

    Préfère donc la solution avec paramètres, voire mieux, procédure stockée paramétrée.

Discussions similaires

  1. Utilise la valeur d'une textbox dans une requête sql
    Par podidoo dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 29/03/2006, 10h53
  2. Réponses: 4
    Dernier message: 14/10/2005, 17h34
  3. Réponses: 1
    Dernier message: 26/09/2005, 10h28
  4. Réponses: 1
    Dernier message: 25/09/2005, 21h03
  5. Alimenter la valeur d'un textbox avec une requete
    Par planetevoyage dans le forum Access
    Réponses: 2
    Dernier message: 12/09/2005, 09h26

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