Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

ExecuteNonQuery връща -1 при използване на sql COUNT въпреки низа на заявката

Въз основа на MSDN:

За изразите UPDATE, INSERT и DELETE връщаната стойност е броят на редовете, засегнати от командата. Когато съществува тригер в таблица, която се вмъква или актуализира, връщаната стойност включва броя на редовете, засегнати както от операцията вмъкване или актуализиране, така и броя на редовете, засегнати от тригера или тригерите. За всички други типове изрази връщаната стойност е -1. Ако възникне връщане назад, връщаната стойност също е -1.

Искате да върнете броя на редовете, засегнати от командата, и да го запишете в int променлива, но тъй като типът на израза е select така че връща -1 .

Решение :Ако искате да получите броя на редовете, засегнати от командата SELECT, и да го запишете в променлива int, можете да използвате ExecuteScalar .

var theCount = (int)cmd.ExecuteScalar();


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Анализиране на I/O производителността за SQL Server

  2. Изберете топ 10 записа за всяка категория

  3. Пребройте броя на записите, върнати от група от

  4. Използване на sp_help_jobschedule в SQL Server

  5. Намерете не-ASCII знаци в колони varchar с помощта на SQL Server