Avatar billede dsj Nybegynder
09. juni 2004 - 15:52 Der er 7 kommentarer og
1 løsning

Uforståelig CastException

Jeg henter en række data ud fra en SQL-server 2000, og jeg har konfirmeret gennem Enterprise Manageren, at mit statement virker efter hensigten:

SELECT item.id, format, release, [no], description, {fn IFNULL(chain_forecast_sw.amount * (allocation / 100), 0.0)} AS target, {fn IFNULL(SUM(quantity), 0.0)} AS actual
...

Problemet opstår idet jeg henter "target" og "actual" ud, og det gælder både hvis de læses som double, float eller int32. Følgende fejler altså:

int target = reader.GetInt32(5);
int actual = reader.GetInt32(6);

Resultatet er, at der smides en "System.InvalidCastException: Specified cast is not valid."

Hvad i alverden går der lige galt her !?!?
Avatar billede chries Nybegynder
09. juni 2004 - 15:54 #1
hvordan er din table defineret ?
Avatar billede chries Nybegynder
09. juni 2004 - 15:55 #2
glemt det =)
Avatar billede dsj Nybegynder
09. juni 2004 - 15:58 #3
Ja, det er jo en udregnet værdi.
Desuden er problemet det samme, hvis værdien aflæses som en string:

string target = reader.GetString(5);

Men udskriver jeg indholdet af reader[5], kan jeg se at der står "0". Og jeg HAR husket at køre (IDataReader)reader.Read(); inden. De foregående værdier item.id osv. kan jeg sagtens læse.
Avatar billede arne_v Ekspert
09. juni 2004 - 15:58 #4
Prøv:

Console.WriteLine(typeof(reader.GetObject(5)).Name);
Avatar billede arne_v Ekspert
09. juni 2004 - 15:59 #5
Mit gæt er at den er decimal.
Avatar billede dsj Nybegynder
09. juni 2004 - 16:06 #6
Der er ingen metode på IDataReader der hedder GetObject(5), men reader.GetDecimal(5) fejler også...
Avatar billede dsj Nybegynder
09. juni 2004 - 16:10 #7
reader.GetFieldType(5).Name returnerer "Double", så GetDouble(5) burde virke...

Jeg tænker på om .NET bliver forvirret over at der er tale om en funktion {fn ...}
Avatar billede dsj Nybegynder
09. juni 2004 - 16:15 #8
Nåh, jeg fandt ud af, at reader[5] var en Double men reader[6] var en int32...
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester