ExecuteScalar af SELECT COUNT(*) returnerer helt præcist en System.Int32 som egner sig glimrende til at blive castet til en int og som er 0 ved ingen rækker
ExecuteScalar vil under alle omstændigheder returnere et object. Hvis man har hentet et tal ud skal unboxes for at få en System.Int32 ud, på samme måde som at du kan caste et tal til et object og tilbage igen.
:)
Men jeg kan godt se din pointe i, at SELECT COUNT(*) vil returnere 0 og ikke Nothing hvis der ikke blev fundet nogen poster, men det er så en feature i selve SQL og ikke .Net
F.eks.
SELECT id FROM tblUser WHERE name = 'cyberfessor'
ved en ExecuteScalar på den, vil der ikke blive returneret 0 men Nothing, hvis at der ikke fandtes en bruger med navnet 'cyberfessor'.
Hm. Hvorfor er det at vi altid kommer op og diskutere over sådanne banaliteter? :)
Ja - fordi ExecuteScalar på SELECT COUNT(*) FROM tabel returnerer en række med en kolonne med et tal som er numerisk nul hvis der ingen rækker er, mens ExecuteScalar pÅ SELECT felt FROM tabel WHERE noget som aldrig er opfyldt returnerer ingen rækker.
Det lyder meget plausibelt at ExecuteScalar for ingen rækker returnerer null/Nothing, men med en række skal den returnere værdien selvom den er numerisk nul.
hvad er mest rigtigt at sige. At man caster til int, eller man unboxer. Og på samme måde, skal man sige man caster fra int til object, eller skal man sige at man boxer?
er vel dobbelkoffekt, i og med at keywordet int mapper til typen System.Int32. Så første gang (Int32) unboxer du, og anden gang (int), ja... det vil compileren vel bare ignorere. Det ville jo svare til at skrive følgende
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.