sql >> Database >  >> RDS >> Sqlserver

ExecuteNonQuery retourneert -1 bij gebruik van sql COUNT ondanks de querystring

Gebaseerd op MSDN:

Voor UPDATE-, INSERT- en DELETE-instructies is de geretourneerde waarde het aantal rijen dat door de opdracht wordt beïnvloed. Als er een trigger bestaat voor een tabel die wordt ingevoegd of bijgewerkt, omvat de geretourneerde waarde het aantal rijen dat wordt beïnvloed door zowel de invoeg- of updatebewerking als het aantal rijen dat wordt beïnvloed door de trigger of triggers. Voor alle andere typen instructies is de geretourneerde waarde -1. Als er een rollback plaatsvindt, is de geretourneerde waarde ook -1.

U wilt het aantal rijen waarop het commando betrekking heeft teruggeven en het opslaan in een int variabele maar aangezien het type instructie select . is dus het retourneert -1 .

Oplossing :Als u het aantal rijen wilt weten dat wordt beïnvloed door het SELECT-commando en het wilt opslaan in een int-variabele, kunt u ExecuteScalar gebruiken .

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


  1. Voorbeeld JDBC-verklaring - Batch invoegen, bijwerken, verwijderen

  2. Exporteer SQLite-database naar een CSV-bestand

  3. Gegevens verwijderen via een tabelwaardefunctie in SQL Server

  4. SQLite JSON_VALID()