五月综合激情婷婷六月,日韩欧美国产一区不卡,他扒开我内裤强吻我下面视频 ,无套内射无矿码免费看黄,天天躁,日日躁,狠狠躁

新聞動態(tài)

JDBC探索之SQLException解析

發(fā)布日期:2022-03-31 14:32 | 文章來源:gibhub

1. SQLException 的概述

當(dāng)使用 JDBC 與數(shù)據(jù)源(在本文中的數(shù)據(jù)源表示我們實際使用的數(shù)據(jù)庫)進行交互的時候遇見錯誤的時候,將會拋出名為 SQLException 的異常。一個 SQLException 的異常里面包含以下信息,用于幫助我們更好的定位錯誤。

錯誤表示:

使用 getMessage 方法便可以獲取。

SQLState 代碼

代碼有五位的字母和數(shù)字組成 。多數(shù)的代碼由 ISO/ANSI 和 Open Group(X/Open) 標(biāo)準(zhǔn)化,但是仍然存在部分的代碼由數(shù)據(jù)庫提供商自行實現(xiàn)。

使用 getSQLState 方法便可以獲取。

錯誤代碼

與 SQLState 不同,錯誤代碼是由數(shù)據(jù)庫提供商自行定義的整數(shù)值,存在是由基礎(chǔ)數(shù)據(jù)源返回的實際錯誤代碼的可能。

使用 getErrorCode 方法便可以獲取。

錯誤原因

表示引發(fā)異常的原因,通過不斷調(diào)用 getCause 方法可以獲取異常發(fā)生的底層原因。

異常鏈

如果出現(xiàn)多個錯誤,則通過此鏈引用異常。

使用 getNextException 方法便可以獲取。

2. SQLException的示例

public static void printSQLException(SQLException e){
  for(Throwable e :ex){
    if (e instanceof SQLException){
      if(ignoreSQLException(((SQLException)e).getSQLState()) == false){
        e.printStackTrace(System.err);
        System.err.println("SQLState:" + ((SQLException)e).getSQLState());
        System.err.println("Error Code:" + ((SQLException)e).getErrorCode());
        System.err.println("Message:" + e.getMessage());
        Throwable t = ex.getCause();
        while(t != null){
          System.out.println("Cause :" + t);
          t = t.getCause();
        }
      }
    }
  }
}
public static boolean ignoreSQLException(String sqlState){
  if(sqlState == null){
    System.out.println("The SQL state is not defined");
  }
  // X0Y32:Jar file already exists in schema
  if(sqlState.equalsIgnoreCase("X0Y32")){
    return true;
  }
  // 42Y55:Table already exists in schema
  if(sqlState.equalsIgnoreCase("42Y55")){
    return true;
  }
  return true;
}

說明:上面的代碼取自 [http:docs.oracle.com] (http://docs.oracle.com/javase/tutorial/jdbc/basics/sqlexception.html)。

3. SQLWarning

SQLWarning 是 SQLException 的一個非常重要的子類,用于表示數(shù)據(jù)庫訪問時出現(xiàn)的警告。作為異常,SQLWarning 不會停止執(zhí)行應(yīng)用程序,而是提醒用戶沒有按計劃發(fā)生任何事情。比如,警告有可能會通知你嘗試撤銷的某個權(quán)限沒有成功,或者通知你在請求斷開的時間可能發(fā)生錯誤。

SQLWarning 有可能被 Connection 、Statement (包括 PreparedStatement 和 CallableStatement)或 ResultSet 報告,這些類都存在 getWarnings 方法,通過調(diào)用該方法才能看到調(diào)用對象上報告的第一個警告。如果 getWarning 返回一個警告,我們可以調(diào)用其 getNextWarning 方法獲取下一個警告。每執(zhí)行一行語句,那么前面那行語句的警告將會清除,這意味著如果我們想要檢索報告處理來的警告,那么必須在下一行語句執(zhí)行之前檢索。

DataTruncation 是最常見的警告,其SQLState代碼均為01004,表示在讀取和寫入數(shù)據(jù)的時候存在問題。DataTruncation 有很多方法可以幫助我們?nèi)ダ斫饽膫€列或參數(shù)數(shù)據(jù)被截斷,截斷是在讀取還是寫入操作,應(yīng)該傳輸多少字節(jié)以及實際傳輸?shù)淖止?jié)數(shù)。

4. 其他類型的SQLException

BatchUpdateException:在批處理更新操作期間發(fā)生錯誤時,將引發(fā)除了所提供的信息,提供的更新計數(shù)被處死之前出現(xiàn)了錯誤的所有語句。

SQLClientInfoException:當(dāng)無法在連接上設(shè)置一個或多個客戶端信息屬性時引發(fā)。除了所提供的信息,也提供了不設(shè)置的客戶端信息屬性的列表。

so on...

總結(jié)

以上就是本文關(guān)于JDBC探索之SQLException解析的全部內(nèi)容,希望對大家有所幫助。感興趣的朋友可以繼續(xù)參閱本站:JDBC常用接口總結(jié)、使用JDBC實現(xiàn)數(shù)據(jù)訪問對象層(DAO)代碼示例等,有什么問題可以隨時留言,小編會及時回復(fù)大家的,歡迎大家留言交流討論。

海外服務(wù)器租用

版權(quán)聲明:本站文章來源標(biāo)注為YINGSOO的內(nèi)容版權(quán)均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復(fù)制或仿造本網(wǎng)站,禁止在非maisonbaluchon.cn所屬的服務(wù)器上建立鏡像,否則將依法追究法律責(zé)任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學(xué)習(xí)參考,不代表本站立場,如有內(nèi)容涉嫌侵權(quán),請聯(lián)系alex-e#qq.com處理。

實時開通

自選配置、實時開通

免備案

全球線路精選!

全天候客戶服務(wù)

7x24全年不間斷在線

專屬顧問服務(wù)

1對1客戶咨詢顧問

在線
客服

在線客服:7*24小時在線

客服
熱線

400-630-3752
7*24小時客服服務(wù)熱線

關(guān)注
微信

關(guān)注官方微信
頂部