DatabaseUpdate [Réglé]

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Aratytof
Messages : 4
Inscription : mar. 27/févr./2007 15:58

DatabaseUpdate [Réglé]

Message 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.
Dernière modification par Aratytof le mar. 27/févr./2007 18:19, modifié 3 fois.
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Tiens une question sur les BD cela faisait longtemps....

Essaie de mettre des guillemets simples autour de paris :

Code : Tout sélectionner

"UPDATE perso SET lieunaissance = 'Paris' WHERE id = 45 "
ou de mettre le chr(34) comme ceci :

Code : Tout sélectionner

"UPDATE perso SET lieunaissance = "+chr(34)+"Paris"+chr(34)+" WHERE id = 45 "
Aratytof
Messages : 4
Inscription : mar. 27/févr./2007 15:58

Message par Aratytof »

Ca marche à merveille !!!

Bien le bonjour Monsieur Progi1984.

Et merci.
Avatar de l’utilisateur
Progi1984
Messages : 2659
Inscription : mar. 14/déc./2004 13:56
Localisation : France > Rennes
Contact :

Message par Progi1984 »

Monsieur, Monsieur, Pas de monsieur entre nous. Call me just God ! lol

Appelle moi simplement Progi1984 ou Progi...
Aratytof
Messages : 4
Inscription : mar. 27/févr./2007 15:58

Message 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...
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message 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).
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message 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")
Aratytof
Messages : 4
Inscription : mar. 27/févr./2007 15:58

Message par Aratytof »

Merci beaucoup pour vos réponses.

A bientôt.
Avatar de l’utilisateur
Flype
Messages : 2431
Inscription : jeu. 29/janv./2004 0:26
Localisation : Nantes

Message 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)

;-

lionel_om
Messages : 1500
Inscription : jeu. 25/mars/2004 11:23
Localisation : Sophia Antipolis (Nice)
Contact :

Message par lionel_om »

Par contre sous une BD Microsoft (ex : ACCESS), il faut utiliser un ' pour échapper un ':

Code : Tout sélectionner

Fonction("UPDATE test SET coucou='c''est bien'")
Webmestre de Basic-univers
Participez à son extension: ajouter vos programmes et partagez vos codes !
Répondre