Page 1 sur 1
DatabaseUpdate [Réglé]
Publié : mar. 27/févr./2007 16:03
par Aratytof
Bonjour.
soit la ligne suivante :
DatabaseUpdate(base,"UPDATE perso SET age=34 WHERE id=1")
pas de problemes, ca roule.
Mais maintanenant je souhaite mettre à jour un champ avec une chaine de charactere tel que par ex :
update perso set lieunaissance = "Paris" where id = 45
Pas moyen...
Une âme charitable peut-être ?
Merci.
Publié : mar. 27/févr./2007 16:22
par Progi1984
Tiens une question sur les BD cela faisait longtemps....
Essaie de mettre des guillemets simples autour de paris :
ou de mettre le chr(34) comme ceci :
Code : Tout sélectionner
"UPDATE perso SET lieunaissance = "+chr(34)+"Paris"+chr(34)+" WHERE id = 45 "
Publié : mar. 27/févr./2007 16:40
par Aratytof
Ca marche à merveille !!!
Bien le bonjour Monsieur Progi1984.
Et merci.
Publié : mar. 27/févr./2007 16:51
par Progi1984
Monsieur, Monsieur, Pas de monsieur entre nous. Call me just God ! lol
Appelle moi simplement Progi1984 ou Progi...
Publié : mar. 27/févr./2007 18:11
par Aratytof
Ben, maintenant, le problème, c'est que ca ne fonctionne pas avec une variable. Ex:
Lieu.s="Les Sables d'Olonne"
ChaineTest.s="UPDATE perso SET LieuDeNaissance = " + lieu.s + " where id = 4"
DatabaseUpdate(base,ChaineTest.S)
Et là... pas content du tout...
Publié : mar. 27/févr./2007 20:10
par Flype
Code : Tout sélectionner
ChaineTest.s = "UPDATE perso SET LieuDeNaissance = '" + lieu.s + "' WHERE id = 4"
çà marchera beaucoup mieux avec des guillemets.
d'ailleurs je te conseille de toujours en mettre sauf pour les numerics (même si mysql les tolère quand même).
Publié : mar. 27/févr./2007 20:40
par Flype
parfois pour de longues et fastidieuses requêtes SQL, on peut adopter cette méthode :
Code : Tout sélectionner
sql$ = "UPDATE perso SET LieuDeNaissance = 'lieu$' WHERE id = id$"
sql$ = ReplaceString(sql$, "id$", "4")
sql$ = ReplaceString(sql$, "lieu$", "Les Sables d'Olonne")
ou bien dans le même esprit
Code : Tout sélectionner
sql$ = "UPDATE perso SET LieuDeNaissance = '%lieu%' WHERE id = %id%"
sql$ = ReplaceString(sql$, "%id%", "4")
sql$ = ReplaceString(sql$, "%lieu%", "Les Sables d'Olonne")
Publié : mer. 28/févr./2007 10:51
par Aratytof
Merci beaucoup pour vos réponses.
A bientôt.
Publié : mer. 28/févr./2007 11:44
par Flype
ah et puis d'ailleurs - autre problème à prendre en compte dans une requête SQL :
les accents (dans
d'Olonnes par exemple) qui vont être confondus avec les guillemets de chaines de caractères.
Il faut utiliser le caractère d'échappement \ (antislash) devant l'accent
Ce qui donne 'Les Sables d\'Olonnes'
En général je fais comme ceci (j'en manipule beaucoup au travail en purebasic ou php) :
Code : Tout sélectionner
;-
Macro SQL(requete, nom, valeur)
ReplaceString(requete, nom, ReplaceString(valeur, "'", "\'"))
EndMacro
;-
Define req.s
req = "UPDATE perso SET "
req + "DateDeNaissance = '%date%', "
req + "LieuDeNaissance = '%lieu%' "
req + "WHERE id = %id%"
req = SQL(req, "%id%", "4")
req = SQL(req, "%date%", "1980-12-31")
req = SQL(req, "%lieu%", "Les Sables d'Olonne")
MessageRequester("Requête SQL", req)
;-
Publié : ven. 09/mars/2007 12:47
par lionel_om
Par contre sous une BD Microsoft (ex : ACCESS), il faut utiliser un ' pour échapper un ':