Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
JDBC sürücüsünü indirin
SQL Server için Microsoft JDBC Sürücüsü kullanılırken, tüm veritabanı hata koşulları SQLServerException sınıfı kullanılarak özel durumlar olarak Java uygulamanıza döndürülür. SQLServerException sınıfının aşağıdaki yöntemleri java.sql.SQLException ve java.lang.Throwable'dan devralınır; ve oluşan SQL Server hatası hakkında belirli bilgileri döndürmek için kullanılabilir:
getSQLState()özel durumun standart X/Open veya SQL99 durum kodunu döndürür.getErrorCode()belirli bir veritabanı hata numarasını döndürür.getMessage()özel durumun tam metnini döndürür. Hata iletisi metni sorunu açıklar ve genellikle görüntülendiğinde hata iletisine eklenen nesne adları gibi bilgiler için yer tutucular içerir.getSQLServerError()SQL Server'danSQLServerErroralınan özel durum hakkında ayrıntılı bilgi içeren nesneyi döndürür. Hiçbir sunucu hatası oluşmadıysa bu yöntem null döndürür.
Sınıfın aşağıdaki yöntemleri, sunucudan SQLServerError oluşturulan hata hakkında daha fazla ayrıntı elde etmek için kullanılabilir.
SQLServerError.getErrorMessage()sunucudan alınan hata iletisini döndürür.SQLServerError.getErrorNumber()hatanın türünü tanımlayan bir sayı döndürür.SQLServerError.getErrorState()SQL Server'dan bir hata, uyarı veya "veri bulunamadı" iletisini temsil eden sayısal bir hata kodu döndürür.SQLServerError.getErrorSeverity()alınan hatanın önem derecesini döndürür.SQLServerError.getServerName(), hatayı oluşturan bir SQL Server örneğini çalıştıran bilgisayarın adını döndürür.SQLServerError.getProcedureName(), hatayı oluşturan saklı yordamın veya uzak yordam çağrısının (RPC) adını döndürür.SQLServerError.getLineNumber(), hatayı oluşturan Transact-SQL komut toplu işleminin veya saklı yordamın içindeki satır numarasını döndürür.
Sonraki örnekte, SQL Server AdventureWorks2025 örnek veritabanına açık bir bağlantı işleve geçirilir ve FROM yan tümcesi olmayan hatalı biçimlendirilmiş bir SQL deyimi oluşturulur. Ardından deyimi çalıştırılır ve sql özel durumu işlenir.
public static void executeSQLException(Connection con) {
try (Statement stmt = con.createStatement();) {
String SQL = "SELECT TOP 10 * Person.Contact";
ResultSet rs = stmt.executeQuery(SQL);
while (rs.next()) {
System.out.println(rs.getString("FirstName") + " " + rs.getString("LastName"));
}
}
catch (SQLException se) {
do {
System.out.println("SQL STATE: " + se.getSQLState());
System.out.println("ERROR CODE: " + se.getErrorCode());
System.out.println("MESSAGE: " + se.getMessage());
System.out.println();
}
while (se != null);
}
}
ServerMessageHandler'i kullanma
Sürücü, 12.8.0 sürümünden itibaren hata geri bildirimi ve günlüğe kaydetme üzerinde daha fazla denetim sağlayan yeni bir ServerMessageHandler eklenmiştir.
ServerMessageHandler kullanmak için, ISQLServerMessageHandler arabiriminin uygulanması gerekir.
ServerMessageHandler özellikleri şunlardır:
İleti geri bildirimi
Uzun süre çalışan sorgulardan (ilerleme iletileri gibi) geri bildirim almanızı sağlar. Örneğin, RAISERROR ('Progress message...', 0, 1) WITH NOWAIT.
Evrensel hata günlüğü
İleti işleyicinizin tüm hataların kaydını tutmasına izin verir.
Evrensel hata işleme
Hata işleme mantığını yalnızca ServerMessageHandler yerine yerleştirmenize olanak tanır, bu sayede uygulamanız genelinde aynı hata işlemeyi tekrarlamanıza gerek kalmaz.
Hata iletisi ciddiyet derecesinin yeniden haritalanması
Belirli hata iletilerini tanımanıza ve önem derecesini değiştirmenize olanak tanır:
SQLServerError.toSQLServerInfoMessage(), bir hata mesajını bilgi mesajına indirerek oluşturulmuş birISQLServerMessagedöndürür.SQLServerError.toSQLServerInfoMessage(int newErrorSeverity), bir hata mesajını bilgi mesajına düşürerek oluşturulan ve yeni bir hata önem derecesi belirlenen birISQLServerMessagedöndürür.SQLServerError.toSQLServerInfoMessage(int newErrorSeverity, int newErrorNumber)bir hata mesajını, yeni bir hata önem derecesi ve hata numarası ile bilgi mesajına düşürerek oluşturulan birISQLServerMessagedöndürür.SQLServerInfoMessage.toSQLServerError()bir bilgi mesajını bir hata mesajına yükselterek oluşturulanISQLServerMessagedöndürür.SQLServerInfoMessage.toSQLServerError(int newErrorSeverity)bir bilgi iletisini, hata önem derecesi yeni bir değer alacak şekilde bir hata iletisine yükselterek oluşturulan birISQLServerMessagedöndürür.SQLServerInfoMessage.toSQLServerError(int newErrorSeverity, int newErrorNumber)bir bilgi iletisini hata iletisine yükselterek, yeni bir hata önem derecesi ve hata numarasıyla oluşturulan birISQLServerMessagedöndürür.
SQLExceptionZincirleme
Ayrıca 12.8.0 sürümüyle birlikte, SQLExceptions zincirlenebilir, bu nedenle son istisna mesajı otomatik olarak başka türlü kaybolabilecek tüm istisnaları içerir. Bu özellik varsayılan olarak etkindir.