Sqlserver
 sql >> Base de données >  >> RDS >> Sqlserver

Le cast spécifié n'est pas une erreur valide à l'aide de C#

cmd1.ExecuteScalar() ne renvoie pas un entier encadré. Affectez-le à un objet et regardez-le dans le débogueur pour voir ce qu'il est vraiment.

Je suppose qu'il va renvoyer un décimal ou un double, et vous devez faire :

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

Ou :

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

[MODIFIER en réponse à une question dans les commentaires ci-dessous]

Pour conserver la valeur décimale, procédez comme suit :

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

Si vous en aviez besoin, vous pouviez convertir la décimale en un double :

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