SqlException Sınıf
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
SQL Server bir uyarı veya hata döndürdüğünde oluşan özel durum. Bu sınıf devralınamaz.
public ref class SqlException sealed : System::Data::Common::DbException
public ref class SqlException sealed : SystemException
public sealed class SqlException : System.Data.Common.DbException
[System.Serializable]
public sealed class SqlException : SystemException
[System.Serializable]
public sealed class SqlException : System.Data.Common.DbException
type SqlException = class
inherit DbException
[<System.Serializable>]
type SqlException = class
inherit SystemException
[<System.Serializable>]
type SqlException = class
inherit DbException
Public NotInheritable Class SqlException
Inherits DbException
Public NotInheritable Class SqlException
Inherits SystemException
- Devralma
- Devralma
- Devralma
- Öznitelikler
Örnekler
Aşağıdaki örnek bir SqlException oluşturur ve ardından özel durumu görüntüler.
public static void ShowSqlException(string connectionString)
{
string queryString = "EXECUTE NonExistantStoredProcedure";
StringBuilder errorMessages = new StringBuilder();
using (SqlConnection connection = new SqlConnection(connectionString))
{
SqlCommand command = new SqlCommand(queryString, connection);
try
{
command.Connection.Open();
command.ExecuteNonQuery();
}
catch (SqlException ex)
{
for (int i = 0; i < ex.Errors.Count; i++)
{
errorMessages.Append("Index #" + i + "\n" +
"Message: " + ex.Errors[i].Message + "\n" +
"LineNumber: " + ex.Errors[i].LineNumber + "\n" +
"Source: " + ex.Errors[i].Source + "\n" +
"Procedure: " + ex.Errors[i].Procedure + "\n");
}
Console.WriteLine(errorMessages.ToString());
}
}
}
Public Sub ShowSqlException(ByVal connectionString As String)
Dim queryString As String = "EXECUTE NonExistantStoredProcedure"
Dim errorMessages As New StringBuilder()
Using connection As New SqlConnection(connectionString)
Dim command As New SqlCommand(queryString, connection)
Try
command.Connection.Open()
command.ExecuteNonQuery()
Catch ex As SqlException
Dim i As Integer
For i = 0 To ex.Errors.Count - 1
errorMessages.Append("Index #" & i.ToString() & ControlChars.NewLine _
& "Message: " & ex.Errors(i).Message & ControlChars.NewLine _
& "LineNumber: " & ex.Errors(i).LineNumber & ControlChars.NewLine _
& "Source: " & ex.Errors(i).Source & ControlChars.NewLine _
& "Procedure: " & ex.Errors(i).Procedure & ControlChars.NewLine)
Next i
Console.WriteLine(errorMessages.ToString())
End Try
End Using
End Sub
Açıklamalar
SQL Server için .NET Framework Veri Sağlayıcısı sunucudan oluşturulan bir hatayla karşılaştığında bu sınıf oluşturulur. (İstemci tarafı hataları standart ortak dil çalışma zamanı özel durumları olarak oluşturulur.) SqlException her zaman en az bir örneğini SqlErroriçerir.
Önem derecesi 10 veya daha az olan iletiler bilgilendiricidir ve kullanıcının girdiği bilgilerdeki hatalardan kaynaklanan sorunları gösterir. 11 ile 16 arasında önem düzeyleri kullanıcı tarafından oluşturulur ve kullanıcı tarafından düzeltilebilir. 17 ile 25 arasında önem derecesi, yazılım veya donanım hatalarını gösterir. Düzey 17, 18 veya 19 hatası oluştuğunda çalışmaya devam edebilirsiniz, ancak belirli bir deyimi yürütemeyebilirsiniz.
önem SqlConnection düzeyi 19 veya daha az olduğunda açık kalır. Önem düzeyi 20 veya daha büyük olduğunda, sunucu normalde kapatır SqlConnection. Ancak kullanıcı bağlantıyı yeniden açabilir ve devam edebilir. Her iki durumda da komutunu yürüten yöntem tarafından bir SqlException oluşturulur.
SQL Server tarafından gönderilen uyarı ve bilgilendirme iletileri hakkında bilgi için bkz. Veritabanı Altyapısı Olayları ve Hataları. SqlException sınıfı SQL Server önem derecesiyle eşler.
Özel durumları işleme hakkında genel bilgiler aşağıdadır. Kodunuz, uygulamanın kilitlenmesini önlemek ve kullanıcıya ilgili bir hata iletisi görüntülenmesine izin vermek için özel durumları yakalamalıdır. İstemci uygulamasında ne olursa olsun (kilitlenme dahil) verilerin tutarlı olduğundan emin olmak için veritabanı işlemlerini kullanabilirsiniz. System.Transaction.TransactionScope veya BeginTransaction yöntemi gibi özellikler (System.Data.OleDb.OleDbConnection, System.Data.ODBC.ODBCConnection ve System.Data.SqlClient.SqlConnection'da), sağlayıcı tarafından oluşturulan özel durumlardan bağımsız olarak tutarlı veriler sağlar. İşlemler başarısız olabilir, bu nedenle hataları yakalayın ve işlemi yeniden deneyin.
.NET Framework 4.5'le başlayarak bir SqlException iç Win32Exceptiondöndürebileceğini unutmayın.
Bir .NET Framework veri sağlayıcısının özel durum sınıfı sağlayıcıya özgü hataları bildirir. Örneğin System.Data.Odbc'de OdbcException, System.Data.OleDb'de OleDbException ve System.Data.SqlClient'da SqlException vardır. Hata ayrıntılarının en iyi düzeyi için bu özel durumları yakalayın ve hatanın ayrıntılarını almak için bu özel durum sınıflarının üyelerini kullanın.
Sağlayıcıya özgü hatalara ek olarak, .NET Framework veri sağlayıcısı türleri System.OutOfMemoryException ve System.Threading.ThreadAbortException gibi .NET Framework özel durumlarını tetikleyebilir. Bu özel durumlardan kurtarma mümkün olmayabilir.
Hatalı giriş, .NET Framework veri sağlayıcısı türünün System.ArgumentException veya System.IndexOutOfRangeException gibi bir özel durum oluşturmasına neden olabilir. Bir yöntemin yanlış zamanda çağrılması System.InvalidOperationException'ı tetikleyebilir.
Bu nedenle, genel olarak, sağlayıcıya özgü özel durumları ve ortak dil çalışma zamanı özel durumlarını yakalayan bir özel durum işleyicisi yazın. Bunlar aşağıdaki gibi katmanlanabilir:
try {
// code here
}
catch (SqlException odbcEx) {
// Handle more specific SqlException exception here.
}
catch (Exception ex) {
// Handle generic ones here.
}
Veya:
try {
// code here
}
catch (Exception ex) {
if (ex is SqlException) {
// Handle more specific SqlException exception here.
}
else {
// Handle generic ones here.
}
}
.NET Framework veri sağlayıcısı yöntem çağrısının yığında kullanıcı kodu olmayan bir iş parçacığı havuzu iş parçacığında başarısız olması da mümkündür. Bu durumda ve zaman uyumsuz yöntem çağrılarını kullanırken, bu özel durumları işlemek ve uygulama kilitlenmesini UnhandledException önlemek için olayı kaydetmeniz gerekir.
Özellikler
BatchCommand |
Bu DbException bir DbBatchyürütülürken oluşturulduysa, özel durumu tetikleyen özel DbBatchCommand duruma başvurur. (Devralındığı yer: DbException) |
Class |
SQL Server için .NET Framework Veri Sağlayıcısı'ndan döndürülen hatanın önem düzeyini alır. |
ClientConnectionId |
İstemci bağlantı kimliğini temsil eder. Daha fazla bilgi için bkz. ADO.NET'de Veri İzleme. |
Data |
Özel durum hakkında kullanıcı tanımlı ek bilgiler sağlayan bir anahtar/değer çifti koleksiyonu alır. (Devralındığı yer: Exception) |
DbBatchCommand |
Türetilmiş bir sınıfta geçersiz kılındığında, bu DbException bir DbBatchyürütülürken oluşturulduysa, özel durumu tetikleyen özel DbBatchCommand duruma başvurur. (Devralındığı yer: DbException) |
ErrorCode |
|
Errors |
SQL Server için .NET Framework Veri Sağlayıcısı tarafından oluşturulan özel durumlar hakkında ayrıntılı bilgi veren bir veya daha fazla SqlError nesneden oluşan bir koleksiyonu alır. |
HelpLink |
Bu özel durumla ilişkili yardım dosyasının bağlantısını alır veya ayarlar. (Devralındığı yer: Exception) |
HResult |
Belirli bir özel duruma atanan kodlanmış sayısal bir değer olan HRESULT'u alır veya ayarlar. (Devralındığı yer: Exception) |
InnerException |
Exception Geçerli özel duruma neden olan örneği alır. (Devralındığı yer: Exception) |
IsTransient |
Bunun DbException temsil ettiği hatanın geçici bir hata olup olmadığını gösterir; örneğin, tetikleme işlemini yeniden denemenin başka bir değişiklik olmadan başarılı olup olmayacağını gösterir. (Devralındığı yer: DbException) |
LineNumber |
Hatayı oluşturan Transact-SQL komut toplu işleminin veya saklı yordamın içindeki satır numarasını alır. |
Message |
Hatayı açıklayan metni alır. |
Message |
Geçerli özel durumu açıklayan bir ileti alır. (Devralındığı yer: Exception) |
Number |
Hata türünü tanımlayan bir sayı alır. |
Procedure |
Hatayı oluşturan saklı yordamın veya uzak yordam çağrısının (RPC) adını alır. |
Server |
Hatayı oluşturan SQL Server örneğini çalıştıran bilgisayarın adını alır. |
Source |
Hatayı oluşturan sağlayıcının adını alır. |
SqlState |
Bunu destekleyen veritabanı sağlayıcıları için, veritabanı işleminin başarısını veya başarısızlığını gösteren standart bir SQL 5 karakterlik dönüş kodu içerir. İlk 2 karakter dönüş kodunun sınıfını (örneğin hata, başarı) temsil ederken, son 3 karakter alt sınıfı temsil ederek hata senaryolarının veritabanı taşınabilir bir şekilde algılanmasını sağlar. Desteklemeyen veritabanı sağlayıcıları için veya uygulanabilir olmayan hata senaryoları için içerir |
StackTrace |
Çağrı yığınındaki anlık çerçevelerin dize gösterimini alır. (Devralındığı yer: Exception) |
State |
SQL Server'dan bir hata, uyarı veya "veri bulunamadı" iletisini temsil eden sayısal bir hata kodu alır. Bu değerlerin kodunu çözme hakkında daha fazla bilgi için bkz. Veritabanı Altyapısı Olayları ve Hataları. |
TargetSite |
Geçerli özel durumu oluşturan yöntemini alır. (Devralındığı yer: Exception) |
Yöntemler
Equals(Object) |
Belirtilen nesnenin geçerli nesneye eşit olup olmadığını belirler. (Devralındığı yer: Object) |
GetBaseException() |
Türetilmiş bir sınıfta geçersiz kılındığında, sonraki bir veya daha fazla özel durumun kök nedeni olan değerini döndürür Exception . (Devralındığı yer: Exception) |
GetHashCode() |
Varsayılan karma işlevi işlevi görür. (Devralındığı yer: Object) |
GetObjectData(SerializationInfo, StreamingContext) |
SerializationInfo öğesini özel durumla ilgili bilgilerle ayarlar. |
GetObjectData(SerializationInfo, StreamingContext) |
Geçersiz.
Türetilmiş bir sınıfta geçersiz kılındığında, özel durumla ilgili bilgilerle öğesini SerializationInfo ayarlar. (Devralındığı yer: Exception) |
GetType() |
Geçerli örneğin çalışma zamanı türünü alır. (Devralındığı yer: Exception) |
MemberwiseClone() |
Geçerli Objectöğesinin sığ bir kopyasını oluşturur. (Devralındığı yer: Object) |
ToString() |
Geçerli SqlException nesneyi temsil eden ve istemci bağlantı kimliğini içeren bir dize döndürür (daha fazla bilgi için bkz ClientConnectionId. ). |
ToString() |
Hatanın HRESULT değerini içeren bir dize döndürür. (Devralındığı yer: ExternalException) |
ToString() |
Geçerli özel durumun dize gösterimini oluşturur ve döndürür. (Devralındığı yer: Exception) |
Ekinlikler
SerializeObjectState |
Geçersiz.
Bir özel durum, özel durum hakkında serileştirilmiş veriler içeren bir özel durum nesnesi oluşturmak üzere seri hale getirildiğinde gerçekleşir. (Devralındığı yer: Exception) |