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
bu sınıf, SQL Server için .NET Framework Veri Sağlayıcısı sunucudan oluşturulan bir hatayla karşılaştığında oluşturulur. (İstemci tarafı hataları standart ortak dil çalışma zamanı özel durumları olarak oluşturulur.) SqlException her zaman en az bir örneği 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 derecesi 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, belirli bir deyimi yürütemeseniz de çalışmaya devam edebilirsiniz.
Önem SqlConnection düzeyi 19 veya daha az olduğunda açık kalır. Önem düzeyi 20 veya daha yüksek olduğunda, sunucu normalde öğesini SqlConnectionkapatır. 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ı. sınıfı, SqlException SQL Server önem derecesine eşler.
Aşağıda özel durumların işlenmesiyle ilgili genel bilgiler yer alı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 (System.Data.OleDb.OleDbConnection, System.Data.ODBC.ODBCConnection ve System.Data.SqlClient.SqlConnection'da) gibi özellikler, sağlayıcı tarafından tetiklenen özel durumlara bakılmaksızın tutarlı veriler sağlar. İşlemler başarısız olabilir, bu nedenle hataları yakalayın ve işlemi yeniden deneyin.
.NET Framework 4.5 ile başlayarak bir SqlException iç Win32Exceptiondöndürebileceğini unutmayın.
.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 durumlara neden olabilir. 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öntemi ç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 nesne 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 değerini alır veya ayarlar. (Devralındığı yer: Exception) |
InnerException |
Geçerli özel duruma Exception 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 denemek başka bir değişiklik olmadan başarılı olabilir. (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 eder ve veritabanı taşınabilir bir şekilde hata senaryolarının algılanması sağlanır. 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 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 özel durum hakkındaki bilgileri ile ayarlar. |
GetObjectData(SerializationInfo, StreamingContext) |
Geçersiz.
Türetilmiş bir sınıfta geçersiz kılındığında, özel durum hakkındaki bilgilerle öğesini ayarlar SerializationInfo . (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) |
Şunlara uygulanır
Ayrıca bkz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin