Sqlserver
 sql >> Base de Dados >  >> RDS >> Sqlserver

A conversão especificada não é um erro válido usando C#


cmd1.ExecuteScalar() não está retornando um inteiro encaixotado. Atribua-o a um objeto e examine-o no depurador para ver o que realmente é.

Eu estou supondo que vai retornar um Decimal ou um duplo, e você precisa fazer:
Int32 result = (Int32)(double)cmd1.ExecuteScalar();

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

[EDIT em resposta a uma pergunta nos comentários abaixo]

Para manter o valor decimal, basta fazer isso:
Decimal result = (Decimal) cmd1.ExecuteScalar();

Se necessário, você pode converter o decimal em um duplo:
double result = (double)(Decimal) cmd1.ExectuteScalar();