Voilà mon problème ça à l'air assez simple pourtant je dois avouer avoir du mal
Je souhaite effectuer une requete d'update dans une base de donnée sqlserver 2005
en simplifiant ma tabe reprend 3 champs
Id_item : int
Name_item : varchar
Prix : decimal
mon soucis est que lorsque j'effectue une requete sous la forme :
string request "UPDATE Item SET Name_item '" + Name_item + "',Prix = " + Prix + " WHERE Id_item = '" + Id_item + "'";
avec comme variables:
int Id_item = 1
string Name_item = "NomItem"
decimal Prix = 25.33
le soucis est que lors du débuging la valeur de prix est bien 25.33 mais une fois passé à ma requete il se transforme en 25,33 et donc me renvoi une erreur
Je ne comprend pas trop d'où viens cette transformation, j'ai également essayé de le changer en float même problème une fois dans ma requete le "." devient ","
Quelqu un aurait il une idée ?
Merci d'avance
Beluzzo
A voir également:
C# string to float
Convertir string en float c# - Meilleures réponses
Bon ben j'ai trouvé une solution pour contourner ce problème, je dis pas que c'est la meilleure mais le resultat est bon
j'ai modifié le type de mon champ prix en float (car sinon je perdait la virgule, certainement lié à mon programme et une transformation dans celui-ci)
là j'envoi directement une string à ma requete et j'utilise la fonction
Prix = REPLACE('" + Prix + "',',','.') ce qui tranforme ma virgule en point.
Le probleme vient du fait que les settings régionaux de machine sont tels que les décimaux sont représentés avec la virgule (format francais), alors que ta DB l'est avec la point(format US). Tu as trois solutions :
1 - changer les settings de ta DB ou de ton OS (pas très fiable)
2 - Lorsque tu passe le prix a ta requete, faire un string.format dessus pour t'assurer que c'est bien un . qui sera utilisés. Fiable mais pas encore top
3 - utiliser les requetes paramétrées (la meilleure solution). Il existe des tutos la dessus. Le mieux reste encore d'utiliser des dataset qui vont gérer tout ca pour toi
J'ai effectivement essayé de passer par des requetes paramétrées cependant je dois travailler avec une connexion odbc (hélas) et malgré le fait d'ajouté de "?" il me mettait toujours le même genre d'erreur (impossible de transformer un varchar en float).
Je suppose donc que dans mon cas la solution se trouvait plutôt dans les autres possibilitées que tu as cité.
Merci quand même
Beluzzo
Vous n’avez pas trouvé la réponse que vous recherchez ?