濮阳杆衣贸易有限公司

主頁(yè) > 知識(shí)庫(kù) > JDBC探索之SQLException解析

JDBC探索之SQLException解析

熱門標(biāo)簽:地圖標(biāo)注圖標(biāo)素材入駐 好搜地圖標(biāo)注 怎么辦理400電話呢 電話機(jī)器人免費(fèi)嗎 龍圖酒吧地圖標(biāo)注 400電話申請(qǐng)什么好 電銷機(jī)器人價(jià)格多少錢一臺(tái) 百度地圖標(biāo)注地方備注 怎么申請(qǐng)400電話申請(qǐng)

1. SQLException 的概述

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

錯(cuò)誤表示:

使用 getMessage 方法便可以獲取。

SQLState 代碼

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

使用 getSQLState 方法便可以獲取。

錯(cuò)誤代碼

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

使用 getErrorCode 方法便可以獲取。

錯(cuò)誤原因

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

異常鏈

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

使用 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;
}

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

3. SQLWarning

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

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

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

4. 其他類型的SQLException

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

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

so on...

總結(jié)

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

您可能感興趣的文章:
  • SQL Server出現(xiàn)System.OutOfMemoryException異常的解決方法
  • System.Data.SqlClient.SqlException: 無(wú)法打開登錄所請(qǐng)求的數(shù)據(jù)庫(kù) 登錄失敗。
  • java.sql.SQLException: 內(nèi)部錯(cuò)誤: Unable to construct a Datum from the specified input

標(biāo)簽:固原 防疫工作 浙江 溫州 廣西 內(nèi)江 汕尾 撫順

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《JDBC探索之SQLException解析》,本文關(guān)鍵詞  JDBC,探索,之,SQLException,解析,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《JDBC探索之SQLException解析》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于JDBC探索之SQLException解析的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    皋兰县| 安西县| 读书| 湄潭县| 庐江县| 宾阳县| 武隆县| 澄江县| 华坪县| 广东省| 乡宁县| 容城县| 梁河县| 逊克县| 腾冲县| 文昌市| 山阴县| 麻江县| 南陵县| 德保县| 秀山| 公安县| 平武县| 白朗县| 泾川县| 藁城市| 扎兰屯市| 秦皇岛市| 桐城市| 蛟河市| 深泽县| 舟曲县| 钦州市| 江阴市| 北流市| 泰和县| 皋兰县| 宾阳县| 西安市| 板桥市| 高淳县|