OVH Cloud OVH Cloud

sql server type byte

6 réponses
Avatar
Pedro
Bonjour,

Je d=E9bute en c# et en sql server et j'ai quelques=20
probl=E8mes avec le type byte.
En fait, je voudrais rentrer dans ma base la valeur de=20
boutons de type radion : je rentre 1 si le visiteur a=20
r=E9pondu oui, et 0 s'il a r=E9pondu non.
Donc, j'ai d=E9fini dans ma base sql server une variable de=20
type byte.
Lors de l'insertiondes donn=E9es, il me rentre bien 1 et 0,=20
mais j'ai cr=E9=E9 une proc=E9dure stock=E9e qui doit me=20
r=E9cup=E9rer cette valeur, et pour le byte, elle me renvoit=20
la valeur -1.

Est-ce que qqn peut me dire pourquoi ?

Merci.

Pedro

6 réponses

Avatar
Steve Kass
Pedro,

Dans SQL Server il n'existe pas le type byte, mais il existe tinyint
(entier de 0 à 255, ou NULL) et bit (entier égal à 0 ou 1, ou NULL).
Pourriez-vous donner la procédure stockée qui vous renvoit la valeur
-1? Il y a des applications avec le type BOOLEAN qui utilise pour VRAI
la valeur -1; ces applications pourraient afficher la valeur bit = 1
comme -1, mais je n'ai jamais vu -1 comme résultat de SELECT
colonneTypeBit executée dans SQL Server.

Steve Kass
Drew University

Pedro wrote:

Bonjour,

Je débute en c# et en sql server et j'ai quelques
problèmes avec le type byte.
En fait, je voudrais rentrer dans ma base la valeur de
boutons de type radion : je rentre 1 si le visiteur a
répondu oui, et 0 s'il a répondu non.
Donc, j'ai défini dans ma base sql server une variable de
type byte.
Lors de l'insertiondes données, il me rentre bien 1 et 0,
mais j'ai créé une procédure stockée qui doit me
récupérer cette valeur, et pour le byte, elle me renvoit
la valeur -1.

Est-ce que qqn peut me dire pourquoi ?

Merci.

Pedro





Avatar
Fred BROUARD
mieux vaut dans ton cas utiliser le type bit plus approprié...

A +

Pedro a écrit:
Bonjour,

Je débute en c# et en sql server et j'ai quelques
problèmes avec le type byte.
En fait, je voudrais rentrer dans ma base la valeur de
boutons de type radion : je rentre 1 si le visiteur a
répondu oui, et 0 s'il a répondu non.
Donc, j'ai défini dans ma base sql server une variable de
type byte.
Lors de l'insertiondes données, il me rentre bien 1 et 0,
mais j'ai créé une procédure stockée qui doit me
récupérer cette valeur, et pour le byte, elle me renvoit
la valeur -1.

Est-ce que qqn peut me dire pourquoi ?

Merci.

Pedro




--
Frédéric BROUARD, MVP Microsoft SQL Server. Langage SQL / Delphi / web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
****************** mailto: ******************
Avatar
Pedro
Bonjour,

Tout d'abord merci de m'avoir répondu.
Dans ma base, j'ai défini une variable de type bit, qui
stocke la valeur de mon radiobutton => si
l'administrateur coche oui, la valeur enregistrée est 1,
sinon, la valeur enregistrée est 0.
Ma procédure stockée est la suivante :
ALTER PROCEDURE GetCategoryDetail
(
@Id int
)
AS
SELECT nom, actif FROM categorie
WHERE id=@Id

Le champs du type bit est "actif", et quand je le teste,
il devrait renvoyer la valeur 1, mais il me renvoie la
valeur -1.

Vous avez une idée ?

Merci.

Pedro

-----Message d'origine-----
Pedro,

Dans SQL Server il n'existe pas le type byte, mais il


existe tinyint
(entier de 0 à 255, ou NULL) et bit (entier égal à 0 ou


1, ou NULL).
Pourriez-vous donner la procédure stockée qui vous


renvoit la valeur
-1? Il y a des applications avec le type BOOLEAN qui


utilise pour VRAI
la valeur -1; ces applications pourraient afficher la


valeur bit = 1
comme -1, mais je n'ai jamais vu -1 comme résultat de


SELECT
colonneTypeBit executée dans SQL Server.

Steve Kass
Drew University

Pedro wrote:

Bonjour,

Je débute en c# et en sql server et j'ai quelques
problèmes avec le type byte.
En fait, je voudrais rentrer dans ma base la valeur de
boutons de type radion : je rentre 1 si le visiteur a
répondu oui, et 0 s'il a répondu non.
Donc, j'ai défini dans ma base sql server une variable




de
type byte.
Lors de l'insertiondes données, il me rentre bien 1 et




0,
mais j'ai créé une procédure stockée qui doit me
récupérer cette valeur, et pour le byte, elle me




renvoit
la valeur -1.

Est-ce que qqn peut me dire pourquoi ?

Merci.

Pedro






.



Avatar
Steve Kass
Pedro,

D'ou executez-vous la procédure ? Dans Query Analyzer, voyez-vous la
valeur -1 de

exec GetCategoryDetail 12345

? Si oui, c'est peut-être un bogue.

Steve

Pedro wrote:

Bonjour,

Tout d'abord merci de m'avoir répondu.
Dans ma base, j'ai défini une variable de type bit, qui
stocke la valeur de mon radiobutton => si
l'administrateur coche oui, la valeur enregistrée est 1,
sinon, la valeur enregistrée est 0.
Ma procédure stockée est la suivante :
ALTER PROCEDURE GetCategoryDetail
(
@Id int
)
AS
SELECT nom, actif FROM categorie
WHERE id=@Id

Le champs du type bit est "actif", et quand je le teste,
il devrait renvoyer la valeur 1, mais il me renvoie la
valeur -1.

Vous avez une idée ?

Merci.

Pedro



-----Message d'origine-----
Pedro,

Dans SQL Server il n'existe pas le type byte, mais il




existe tinyint


(entier de 0 à 255, ou NULL) et bit (entier égal à 0 ou




1, ou NULL).


Pourriez-vous donner la procédure stockée qui vous




renvoit la valeur


-1? Il y a des applications avec le type BOOLEAN qui




utilise pour VRAI


la valeur -1; ces applications pourraient afficher la




valeur bit = 1


comme -1, mais je n'ai jamais vu -1 comme résultat de




SELECT


colonneTypeBit executée dans SQL Server.

Steve Kass
Drew University

Pedro wrote:



Bonjour,

Je débute en c# et en sql server et j'ai quelques
problèmes avec le type byte.
En fait, je voudrais rentrer dans ma base la valeur de
boutons de type radion : je rentre 1 si le visiteur a
répondu oui, et 0 s'il a répondu non.
Donc, j'ai défini dans ma base sql server une variable






de


type byte.
Lors de l'insertiondes données, il me rentre bien 1 et






0,


mais j'ai créé une procédure stockée qui doit me
récupérer cette valeur, et pour le byte, elle me






renvoit


la valeur -1.

Est-ce que qqn peut me dire pourquoi ?

Merci.

Pedro







.









Avatar
Pedro
En fait, je travaille sous visual studio, et avec c#.
Ma procédure stockée est appelée dans une fonction de ma
classe.
Vu que ça ne marche pas, j'ai essayé de la tester en
faisant un clic droit > exécuter la procédure stockée.
Là il me demande l'id.
J'ai fait un test : si je lui demande de me renvoyer le
détail d'une catégorie où le champs actif est à 0, pas de
problème, il me renvoie la bonne valeur. Par contre, si
j'exécute la même procédure stockée avec une valeur = 1
dans la base, il me renvoit -1.

Vous avez une idée ?

Merci.

Pedro


-----Message d'origine-----
Pedro,

D'ou executez-vous la procédure ? Dans Query


Analyzer, voyez-vous la
valeur -1 de

exec GetCategoryDetail 12345

? Si oui, c'est peut-être un bogue.

Steve

Pedro wrote:

Bonjour,

Tout d'abord merci de m'avoir répondu.
Dans ma base, j'ai défini une variable de type bit, qui
stocke la valeur de mon radiobutton => si
l'administrateur coche oui, la valeur enregistrée est




1,
sinon, la valeur enregistrée est 0.
Ma procédure stockée est la suivante :
ALTER PROCEDURE GetCategoryDetail
(
@Id int
)
AS
SELECT nom, actif FROM categorie
WHERE id=@Id

Le champs du type bit est "actif", et quand je le




teste,
il devrait renvoyer la valeur 1, mais il me renvoie la
valeur -1.

Vous avez une idée ?

Merci.

Pedro



-----Message d'origine-----
Pedro,

Dans SQL Server il n'existe pas le type byte, mais il




existe tinyint


(entier de 0 à 255, ou NULL) et bit (entier égal à 0






ou




1, ou NULL).


Pourriez-vous donner la procédure stockée qui vous




renvoit la valeur


-1? Il y a des applications avec le type BOOLEAN qui




utilise pour VRAI


la valeur -1; ces applications pourraient afficher la




valeur bit = 1


comme -1, mais je n'ai jamais vu -1 comme résultat de




SELECT


colonneTypeBit executée dans SQL Server.

Steve Kass
Drew University

Pedro wrote:



Bonjour,

Je débute en c# et en sql server et j'ai quelques
problèmes avec le type byte.
En fait, je voudrais rentrer dans ma base la valeur








de
boutons de type radion : je rentre 1 si le visiteur a
répondu oui, et 0 s'il a répondu non.
Donc, j'ai défini dans ma base sql server une








variable






de


type byte.
Lors de l'insertiondes données, il me rentre bien 1








et






0,


mais j'ai créé une procédure stockée qui doit me
récupérer cette valeur, et pour le byte, elle me






renvoit


la valeur -1.

Est-ce que qqn peut me dire pourquoi ?

Merci.

Pedro







.










.



Avatar
Steve Kass
Pedro,

Est-ce que vous utilisez le type C# Boolean et non pas le type
System.Data.SqlTypes.SqlBoolean ?

La valeur Boolean (non SqlBoolean) de TRUE va se convertir à -1 comme
entier signé, semble-t-il:

http://weblogs.asp.net/dneimke/archive/2004/03/22/93547.aspx

Le type SQL Server bit et le type SqlBoolean sont vrais types entier (1
ou 0, ou nul), mais le type C# Boolean ne l'est pas - c'est une valeur
logique, d'ou on ne peut attend que FALSE correspond à zéro et TRUE
correspond à non-zéro. La conversion avec *Convert*.ToInt32() donne 1
pour TRUE, selon
http://groups.google.com/groups?q=c%23+boolean+convert+integer&start&hl=en&lr=&ie=UTF-8&oe=UTF-8&safe=off&selm=O%24y0MiV5AHA.1524%40tkmsftngp07&rnum

Si vous voyez toujours -1 en utilisant SqlBoolean et les méthodes de
conversion de type .NET, il y a peut-être un bogue.

Steve


Pedro wrote:

En fait, je travaille sous visual studio, et avec c#.
Ma procédure stockée est appelée dans une fonction de ma
classe.
Vu que ça ne marche pas, j'ai essayé de la tester en
faisant un clic droit > exécuter la procédure stockée.
Là il me demande l'id.
J'ai fait un test : si je lui demande de me renvoyer le
détail d'une catégorie où le champs actif est à 0, pas de
problème, il me renvoie la bonne valeur. Par contre, si
j'exécute la même procédure stockée avec une valeur = 1
dans la base, il me renvoit -1.

Vous avez une idée ?

Merci.

Pedro




-----Message d'origine-----
Pedro,

D'ou executez-vous la procédure ? Dans Query




Analyzer, voyez-vous la


valeur -1 de

exec GetCategoryDetail 12345

? Si oui, c'est peut-être un bogue.

Steve

Pedro wrote:



Bonjour,

Tout d'abord merci de m'avoir répondu.
Dans ma base, j'ai défini une variable de type bit, qui
stocke la valeur de mon radiobutton => si
l'administrateur coche oui, la valeur enregistrée est






1,


sinon, la valeur enregistrée est 0.
Ma procédure stockée est la suivante :
ALTER PROCEDURE GetCategoryDetail
(
@Id int
)
AS
SELECT nom, actif FROM categorie
WHERE id=@Id

Le champs du type bit est "actif", et quand je le






teste,


il devrait renvoyer la valeur 1, mais il me renvoie la
valeur -1.

Vous avez une idée ?

Merci.

Pedro





-----Message d'origine-----
Pedro,

Dans SQL Server il n'existe pas le type byte, mais il






existe tinyint




(entier de 0 à 255, ou NULL) et bit (entier égal à 0








ou








1, ou NULL).




Pourriez-vous donner la procédure stockée qui vous






renvoit la valeur




-1? Il y a des applications avec le type BOOLEAN qui






utilise pour VRAI




la valeur -1; ces applications pourraient afficher la






valeur bit = 1




comme -1, mais je n'ai jamais vu -1 comme résultat de






SELECT




colonneTypeBit executée dans SQL Server.

Steve Kass
Drew University

Pedro wrote:





Bonjour,

Je débute en c# et en sql server et j'ai quelques
problèmes avec le type byte.
En fait, je voudrais rentrer dans ma base la valeur










de


boutons de type radion : je rentre 1 si le visiteur a
répondu oui, et 0 s'il a répondu non.
Donc, j'ai défini dans ma base sql server une










variable










de




type byte.
Lors de l'insertiondes données, il me rentre bien 1










et










0,




mais j'ai créé une procédure stockée qui doit me
récupérer cette valeur, et pour le byte, elle me








renvoit




la valeur -1.

Est-ce que qqn peut me dire pourquoi ?

Merci.

Pedro









.













.