最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JDBC探索之SQLException解析

 更新時(shí)間:2017年10月24日 16:06:03   作者:大明二代  
這篇文章主要介紹了JDBC探索之SQLException解析,具有一定參考價(jià)值,需要的朋友可以了解下。

1. SQLException 的概述

當(dāng)使用 JDBC 與數(shù)據(jù)源(在本文中的數(shù)據(jù)源表示我們實(shí)際使用的數(shù)據(jù)庫(kù))進(jìn)行交互的時(shí)候遇見(jiàn)錯(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è)非常重要的子類(lèi),用于表示數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)時(shí)出現(xiàn)的警告。作為異常,SQLWarning 不會(huì)停止執(zhí)行應(yīng)用程序,而是提醒用戶(hù)沒(méi)有按計(jì)劃發(fā)生任何事情。比如,警告有可能會(huì)通知你嘗試撤銷(xiāo)的某個(gè)權(quán)限沒(méi)有成功,或者通知你在請(qǐng)求斷開(kāi)的時(shí)間可能發(fā)生錯(cuò)誤。

SQLWarning 有可能被 Connection 、Statement (包括 PreparedStatement 和 CallableStatement)或 ResultSet 報(bào)告,這些類(lèi)都存在 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 是最常見(jiàn)的警告,其SQLState代碼均為01004,表示在讀取和寫(xiě)入數(shù)據(jù)的時(shí)候存在問(wèn)題。DataTruncation 有很多方法可以幫助我們?nèi)ダ斫饽膫€(gè)列或參數(shù)數(shù)據(jù)被截?cái)?,截?cái)嗍窃谧x取還是寫(xiě)入操作,應(yīng)該傳輸多少字節(jié)以及實(shí)際傳輸?shù)淖止?jié)數(shù)。

4. 其他類(lèi)型的SQLException

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

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

so on...

總結(jié)

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

相關(guān)文章

  • MySQL 使用 ORDER BY 排序和 DELETE 刪除記錄的操作過(guò)程

    MySQL 使用 ORDER BY 排序和 DELETE 刪

    這篇文章主要介紹了MySQL 使用 ORDER BY 排序和 DELETE 刪除記錄的操作過(guò)程,即數(shù)據(jù)庫(kù)查詢(xún)與數(shù)據(jù)操作,本文通過(guò)示例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧
    2023-11-11
  • 最新版MySQL5.7.19解壓版安裝指南

    最新版MySQL5.7.19解壓版安裝指南

    這篇文章主要介紹了最新版MySQL5.7.19解壓版安裝指南,需要的朋友可以參考下
    2017-08-08
  • MySQL約束攻擊的原理和復(fù)現(xiàn)方式

    MySQL約束攻擊的原理和復(fù)現(xiàn)方式

    這篇文章主要介紹了MySQL約束攻擊的原理和復(fù)現(xiàn)方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,
    2023-11-11
  • CentOS7中安裝MySQL的圖文講解

    CentOS7中安裝MySQL的圖文講解

    這篇文章主要介紹了CentOS7中安裝MySQL的圖文講解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 根據(jù)status信息對(duì)MySQL服務(wù)器進(jìn)行優(yōu)化

    根據(jù)status信息對(duì)MySQL服務(wù)器進(jìn)行優(yōu)化

    網(wǎng)上有很多的文章教怎么配置MySQL服務(wù)器,但考慮到服務(wù)器硬件配置的不同,具體應(yīng)用的差別,那些文章的做法只能作為初步設(shè)置參考,我們需要根據(jù)自己的情況進(jìn)行配置優(yōu)化,好的做法是MySQL服務(wù)器穩(wěn)定運(yùn)行了一段時(shí)間后運(yùn)行,根據(jù)服務(wù)器的”狀態(tài)”進(jìn)行優(yōu)化。
    2011-09-09
  • MySQL數(shù)據(jù)庫(kù)case?when?then?end的詳細(xì)使用方法

    MySQL數(shù)據(jù)庫(kù)case?when?then?end的詳細(xì)使用方法

    在SQL語(yǔ)法中我們首先使用CASE關(guān)鍵字開(kāi)頭,然后根據(jù)不同的條件使用WHEN關(guān)鍵字,并在每個(gè)條件后面指定結(jié)果,這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫(kù)case?when?then?end的詳細(xì)使用方法,需要的朋友可以參考下
    2023-12-12
  • 清理Mysql general_log的方法總結(jié)

    清理Mysql general_log的方法總結(jié)

    在本篇文章里小編給大家分享的是一篇關(guān)于清理Mysql general_log的相關(guān)知識(shí)點(diǎn),需要的朋友們學(xué)習(xí)下。
    2019-10-10
  • MySQL實(shí)現(xiàn)列轉(zhuǎn)行與行轉(zhuǎn)列的操作代碼

    MySQL實(shí)現(xiàn)列轉(zhuǎn)行與行轉(zhuǎn)列的操作代碼

    在處理數(shù)據(jù)時(shí),我們常常會(huì)遇到需要將表中的列(字段)轉(zhuǎn)換為行,或?qū)⑿修D(zhuǎn)換為列的情況,這種操作通常被稱(chēng)為“列轉(zhuǎn)行”(Pivoting)和“行轉(zhuǎn)列”(Unpivoting),本文將向您介紹如何使用 CASE 語(yǔ)句、聚合函數(shù)以及 GROUP BY 子句來(lái)完成列轉(zhuǎn)行和行轉(zhuǎn)列的操作
    2024-09-09
  • mysql屬于關(guān)系型數(shù)據(jù)庫(kù)嗎

    mysql屬于關(guān)系型數(shù)據(jù)庫(kù)嗎

    在本篇文章里小編給大家分享的是一篇關(guān)于mysql是否屬于關(guān)系型數(shù)據(jù)庫(kù)的相關(guān)文章,有興趣的朋友們可以參考下。
    2020-06-06
  • MySQL DEFINER具體使用詳解

    MySQL DEFINER具體使用詳解

    在 MySQL 數(shù)據(jù)庫(kù)中,在創(chuàng)建視圖及函數(shù)的時(shí)候,你有注意過(guò) definer 選項(xiàng)嗎?本篇文章主要介紹下 MySQL 中 definer 的含義及作用,感興趣的可以了解一下
    2021-08-08

最新評(píng)論

旬阳县| 当涂县| 巢湖市| 呼和浩特市| 长岛县| 麦盖提县| 长沙市| 宜阳县| 二连浩特市| 呼伦贝尔市| 广汉市| 道真| 平南县| 吉木乃县| 漳平市| 宝兴县| 黔江区| 罗江县| 綦江县| 宁阳县| 瑞安市| 永新县| 新平| 达州市| 万安县| 抚宁县| 吴堡县| 沙湾县| 安乡县| 兴和县| 荆门市| 岐山县| 卢湾区| 鲜城| 江源县| 同德县| 康马县| 太湖县| 广南县| 阜康市| 阜南县|