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

Grails Java Discussion :

erreur requete SQL


Sujet :

Grails Java

  1. #1
    Membre habitué
    erreur requete SQL
    j'ai un probléme dans la requete SQl svp quelqu'un m'aide

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
     
    package tools
     
    import groovy.sql.Sql
     
     
     
    import java.sql.Connection
    import java.sql.SQLException
     
     
    class AddToolsController {
     
        def addtol() { 
     
    		def cdb = new ConnectDB()
     
    	//récupération des variable d'aprés le formulaire html
    			 def name =request.getParameterValues("nom_app")
    			 def description=request.getParameterValues("descrip")
    		     def url =request.getParameterValues("lien")
     
     
     
    		if(name!=null && description!=null && url!=null)
    		{
     
     
    cdb.sql.executeQuery("INSERT INTO tools( nom, description,lien) VALUES ($name,$decription,$url)")
     
    flash.message="votre application est enregistrée"
     
    		}
    		else { 
    			println ("il faut ajouter au moin une application")
    		}
     
    		}
     
     
     
    }

  2. #2
    Membre confirmé
    Étant donné que tu ne donnes pas l'erreur, je vais supposer une réponse, mais je t'averti tout de suite que tu ne dois JAMAIS faire ça:
    il doit manquer des apostrophes autour des variables pour dire que ce sont des champs de texte:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    cdb.sql.executeQuery("INSERT INTO tools( nom, description,lien) VALUES ('$name','$decription','$url')")


    pour revenir à mon avertissement, il ne faut JAMAIS mettre des variables directement dans le code SQL sinon l'utilisateur pourrait écrire du code SQL dans le nom de l'application ou sa description. Le code pourrait être anodin ou très destructeur comme un "DROP database" qui effacerait toute ta base de données.

    Tu devrais donc plutôt faire:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    cdb.sql.executeQuery("INSERT INTO tools( nom, description,lien) VALUES (?,?,?)", [$name,$decription,$url])

    Ainsi, la classe Sql va s'occuper de nettoyer les variables et va les insérer aux lieux des points d'interrogations.

###raw>template_hook.ano_emploi###