2009-04-08 6 views
1


Wenn Sql Server einen Fehler zurückgibt, sollte SqlException ausgelöst werden. Aber es ist nicht

Wenn ich Gridview SqlDataSource binden und auch AutoGenerateEditButton auf true gesetzt, und wenn ich dann versuchen, ein Feld zu aktualisieren (dieses Feld ein Primärschlüssel in der Datenbank ist), dann sollte Datenbank zurückgeben eine Fehler und damit SqlException sollte geworfen werden ?! Warum meldet die Seite keine Ausnahme? Stattdessen legt alle Gridview alle Felder in dieser Zeile auf ihre ursprünglichen Werte zurück.


thanx


EDIT:

Hallo,


Wenn ich gleiche Update-Anweisung mit dem folgenden Code ausgeführt, ich bekam Kann nicht Identität aktualisieren colu mn 'EmployeeID' Ausnahme, ich gehe davon aus SQL Server so tat gleiche Fehler melden, wenn Gridview zu aktualisieren versucht, aber aus irgendeinem Grunde Ausnahme wurde nicht erhoben:

 SqlConnection sc = new SqlConnection(); 
     sc.ConnectionString = @"Data source=localhost; integrated security=sspi; initial catalog=northwind;"; 
     SqlCommand sComand = new SqlCommand(); 

     sComand.Connection = sc; 
     sComand.CommandText = "update Employees set EmployeeId=100,FirstName='Suzy',"+ 
        "LastName='Smile',City='Moon' where EmployeeId=1"; 
     sc.Open(); 
     int I = sComand.ExecuteNonQuery(); 


ZWEITER EDIT:

Ist Ihre DataKeyNames-Eigenschaft richtig eingestellt?

Ich habe versucht, mit DataKeyNames = „EmployeeId“, aber Ausnahme Einstellung wurde noch nicht

+1

Sehr gute/nützliche Frage, +1 für die Frage. –

Antwort

2

angehoben Wenn Ihre SQL-Abfrage ein Ergebnis zurückgibt, dann wird C#, dieses Ergebnis bekommen. Wenn Ihre SQL-Abfrage eine Ausnahme auslöst, wird C# diese Ausnahme erhalten. Sie können hier nicht mischen und passen, es ist keine Garderobe.

2

Eine Ausnahme wird NUR dann ausgelöst, wenn der Schweregrad ERROR in T-SQL 16 oder mehr AFAIK beträgt. Daher sind nicht alle Fehler in SQL Server identisch.

2

Sie sollten eigentlich in der Lage sein, den Primärschlüssel ohne Fehler zu ändern, solange dies nicht zu einem Duplikat führt.

Verwandte Themen