Ich habe diese Methode zuvor verwendet, um die Anzahl der geänderten Zeilen zurückzugeben. Ich bin es, um eine Einfügemethode auszuführen, die Einfügung läuft gut in der gespeicherten Prozedur, aber der Rückgabewert von der ExecuteNonQuery gibt immer -1 zurück.
Hier ist mein C # -Code:
%Vor%Warum bekomme ich -1 anstatt der tatsächlichen Anzahl der geänderten Zeilen?
Von Microsoft:
Bei UPDATE-, INSERT- und DELETE-Anweisungen ist der Rückgabewert die Anzahl der vom Befehl betroffenen Zeilen. Wenn ein Trigger für eine Tabelle vorhanden ist, die eingefügt oder aktualisiert wird, enthält der Rückgabewert die Anzahl der Zeilen, die von der Einfüge- oder Aktualisierungsoperation betroffen sind, sowie die Anzahl der Zeilen, auf die sich der Trigger oder die Trigger auswirken. Für alle anderen Arten von Anweisungen ist der Rückgabewert -1. Wenn ein Rollback auftritt, ist der Rückgabewert ebenfalls -1.
Sie erhalten wahrscheinlich -1, weil Sie eine gespeicherte Prozedur und nicht eine direkte Tabellenänderung verwenden
Welchen Wert geben Sie von Ihrer gespeicherten Prozedur zurück? Können Sie den Code für Ihre gespeicherte Prozedur anzeigen? Sie müssen wahrscheinlich Ihre gespeicherte Prozedur bearbeiten, um den erforderlichen Wert zurückzugeben, ODER, Ihre gespeicherte Prozedur gibt entweder -1 zurück oder die Variable, die die gespeicherte Prozedur zurückgibt, hat -1 als Wert.
Erhalte die Zeilenanzahl, die von der gespeicherten Prozedur ausgegeben wird, so wie @rowCount=@@Rowcount
. In der DAL, verwenden Sie dbManager.AddOutParameter("RowCount", DbType.Int32, rowCount);
Dann in den letzten Zeilen erhalten Sie als (int)dbManager.GetParameterValue("RowCount")
.
Tags und Links c# executenonquery