Un Peu de SqlServer en c#
J'ai besoin d'obtenir un Peu d'un serveur sql en c#. J'ai essayé différentes solutions comme:
bool active = rdr.GetSqlBinary(5);
Int16 active = rdr.GetSqlBinary(5);
Mais ne peut pas trouver un moyen d'obtenir le Bit.
Quelqu'un peut-il donner un exemple?
- Sur une note de côté, vous pouvez faire de votre code un peu plus lisible et maintenable en utilisant GetOrdinal() par exemple: rdr.GetSqlBoolean(rdr.GetOrdinal("MyBitColumn"))
- J'ai aussi essayé: bool active = rdr.GetSqlBoolean(12); j'obtiens le résultat: impossible de convertir le SqlBoolean bool
- Bonjour, il vous manque un casting, voir ma réponse ci-dessous.
Vous devez vous connecter pour publier un commentaire.
Si vous êtes certains que les valeurs de la colonne ne sera jamais
NULL
puis le suivant fera l'affaire:Si il est possible que
NULL
valeurs peuvent être retournées:Utiliser le GetSqlBoolean méthode.
mise à Jour
Assurez-vous de jeter votre valeur de retour comme un booléen, c'est à dire
SqlBoolean
est effectivement juste un wrapper autour d'un booléen pour permettre la possibilité de valeur null etc. Donc, si vous allez appelerGetSqlBoolean
puis immédiatement jeté le résultat debool
vous pourriez tout aussi bien appelerrdr.GetBoolean
en premier lieu.utilisation GetFieldType pour déterminer le type de données à utiliser.
Je suis arrivé à la solution suivante à l'aide de:
SqlBoolean
est effectivement juste un wrapper autour d'un booléen pour permettre la possibilité de valeur null etc. Donc, si vous allez appelerGetSqlBoolean
puis immédiatement jeté le résultat debool
vous pourriez tout aussi bien appelerrdr.GetBoolean
en premier lieu.Il ya une méthode get de SqlBoolean struct: IsTrue. De sorte que vous pouvez l'utiliser de cette façon, pour être sûr que le résultat est un booléen: