Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Określone rzutowanie nie jest prawidłowym błędem przy użyciu C#

cmd1.ExecuteScalar() nie zwraca zapakowanej liczby całkowitej. Przypisz go do obiektu i spójrz na niego w debugerze, aby zobaczyć, czym naprawdę jest.

Zgaduję, że będzie to zwracać liczbę dziesiętną lub podwójną, i musisz to zrobić:

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

Lub:

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

[EDYTUJ w odpowiedzi na pytanie w komentarzach poniżej]

Aby zachować wartość dziesiętną, po prostu zrób tak:

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

W razie potrzeby możesz rzucić liczbę dziesiętną na podwójną:

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jaka jest różnica między liczbą zmiennoprzecinkową a liczbową/dziesiętną w SQL Server — samouczek SQL Server / T-SQL, część 33

  2. Jak mogę uzyskać konkretną porcję wyników?

  3. SQL Server Konwertuj liczbę całkowitą na ciąg binarny

  4. Uzyskaj ostatni rekord z każdego miesiąca

  5. nie można otworzyć, ponieważ jest to wersja 706. Ten serwer obsługuje wersję 662 i wcześniejsze. Ścieżka zmiany wersji nie jest obsługiwana