sql >> Base de Datos >  >> RDS >> Sqlserver

La conversión especificada no es un error válido usando C#

cmd1.ExecuteScalar() no está devolviendo un entero en caja. Asígnelo a un objeto y mírelo en el depurador para ver qué es realmente.

Supongo que devolverá un Decimal o un doble, y debes hacer:

Int32 result = (Int32)(double)cmd1.ExecuteScalar();

O:

Int32 result = (Int32)(Decimal)cmd1.ExecuteScalar();

[EDITAR en respuesta a una pregunta en los comentarios a continuación]

Para mantener el valor decimal, solo haz esto:

Decimal result = (Decimal) cmd1.ExecuteScalar();

Si lo necesitara, podría convertir el decimal en un doble:

double result = (double)(Decimal) cmd1.ExectuteScalar();