Mi procedimiento almacenado:excepción de difusión no válida cuando se lee resultado de SQLDataReader
@UserName nvarchar(64),
AS
BEGIN
SELECT MPU.UserName, SUM(TS.Monday)as Monday //TS.Monday contains float value
FROM dbo.MapTask MT JOIN dbo.MapPU MPU
ON MPU.ID = MT.MPUID
JOIN dbo.TimeSheet TS
ON MT.TMSID = TS.ID
WHERE MT.StartDate = @StartDate_int and MPU.UserName = @UserName
GROUP BY MPU.UserName
END
En mi código C#
SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
float monday = (float)reader["Monday"]; // Invalid cast exception
}
Puede alguien decirme lo que hice mal? Gracias.
Puede intentar Convert.ToFloat (reader ["Monday"]. ToString()); – Jethro
@Jethro: Es una forma bastante horrible de hacerlo. Cuando una conversión falla, reemplazarla con * dos * conversiones (hacia y desde la cadena) generalmente * no * es una buena idea. –
@Jon Skeet, eso tiene sentido, además de que Convert.ToFloat no existe. Necesito ser más cuidadoso Si Convert.ToFloat existiera, sería mejor hacer esto luego. Convert.ToFloat (lector ["lunes"]); ?? – Jethro