Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

Angegebene Umwandlung ist kein gültiger Fehler bei Verwendung von C#

cmd1.ExecuteScalar() gibt keine Boxed Integer zurück. Weisen Sie es einem Objekt zu und sehen Sie es sich im Debugger an, um zu sehen, was es wirklich ist.

Ich vermute, es wird eine Dezimalzahl oder ein Double zurückgeben, und Sie müssen Folgendes tun:

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

Oder:

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

[BEARBEITEN als Antwort auf eine Frage in den Kommentaren unten]

Um den Dezimalwert beizubehalten, tun Sie einfach Folgendes:

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

Wenn nötig, könnten Sie die Dezimalzahl in ein Double umwandeln:

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