第七章 數(shù)據(jù)庫元數(shù)據(jù)(Database Metadata)

DatabaseMetadata 接口通過JDBC驅(qū)動程序的實(shí)現(xiàn)提供基礎(chǔ)數(shù)據(jù)源的信息序仙。它主要由應(yīng)用程序服務(wù)器和工具來決定如何與給定的數(shù)據(jù)源交互记某。應(yīng)用程序也可以使用databasemetadata方法來獲取有關(guān)數(shù)據(jù)源的信息苛聘,但這是不特別的
DatabaseMetadata 接口包括超過150個方法滔吠,可以根據(jù)他們提供的信息的類型分類:

  • 關(guān)于數(shù)據(jù)源的一般信息
  • 數(shù)據(jù)源是否支持給定的特性或功能
  • 數(shù)據(jù)源的限制
  • 數(shù)據(jù)源包含哪些SQL對象和這些對象的屬性
  • 由數(shù)據(jù)源提供的事務(wù)支持

DatabaseMetadata 接口還包含超過40個字段医吊,這是用來作為各種 databasemetadata 方法返回值

本章提出的databasemetadata接口的概述,舉例說明元數(shù)據(jù)方法的分類贾陷,并介紹了一些新的方法缘眶。然而,對于一個全面的列表髓废,讀者應(yīng)該參考JDBC API規(guī)范

Note – 注–JDBC定義結(jié)果集元數(shù)據(jù)接口巷懈,會在第十五章 "結(jié)果集" 進(jìn)行討論

7.1 創(chuàng)建一個databasemetadata對象

一個 databasemetadata 對象由連接方法 getmetadata 創(chuàng)建。一旦創(chuàng)建慌洪,它就可以被用來動態(tài)地發(fā)現(xiàn)底層數(shù)據(jù)源的信息砸喻。代碼示例7-1創(chuàng)建一個databasemetadata對象。

DatabaseMetaData dbmd = con.getMetadata();
int maxLen = dbmd.getMaxTableNameLength();

7.2 通用信息檢索

一些databasemetadata方法用于動態(tài)地發(fā)現(xiàn)數(shù)據(jù)源的一般信息蒋譬,以及一些關(guān)于它的實(shí)現(xiàn)細(xì)節(jié)。這一類中的這方法是

  • getURL
  • getUserName
  • getDatabaseProductVersion, getDriverMajorVersion and getDriverMinorVersion
  • getSchemaTerm, getCatalogTerm and getProcedureTerm
  • nullsAreSortedHigh and nullsAreSortedLow
  • usesLocalFiles and usesLocalFilePerTable
  • getSQLKeywords

7.3 確定功能支持

一大組 databasemetadata 方法可以用來確定一個特定的功能或功能集是由 Driver 或底層數(shù)據(jù)源支持愉适。除此之外犯助,一些方法描述了提供何種級別的支持。對單個特征支持的描述 的一些方法是:

  • supportsaltertablewithdropcolumn
  • supportsBatchUpdates
  • supportsPositionedDelete
  • supportsFullOuterJoins
  • supportsStoredProcedures
  • supportsMixedCaseQuotedIdentifiers

描述功能支持級別的方法包括:

  • supportsANSI92EntryLevelSQL
  • supportsCoreSQLGrammar

7.4 數(shù)據(jù)源的限制

這一組方法提供了給定數(shù)據(jù)源所施加的限制维咸。這一類中的一些方法是:

  • getMaxRowSize
  • getMaxStatementLength
  • getMaxTablesInSelect
  • getMaxConnections
  • getMaxCharLiteralLength
  • getMaxColumnsInTable

這個組中的方法返回一個int類型的值剂买,表示沒有限制或限制是未知的

7.5 SQL對象及其屬性

一些databasemetadata方法提供SQL對象的信息對于一個給定的數(shù)據(jù)源,還包括確定這些對象屬性的方法癌蓖,這一類的例子是:

  • getSchemas
  • getCatalogs
  • getTables
  • getPrimaryKeys
  • getProcedures
  • getProcedureColumns
  • getUDTs
  • getFunctions
  • getFunctionColumns

這是從一個databasemetadata方法返回ResultSet對象具有敏感性type_forward_only和并發(fā)concur_read_only瞬哼。resultset.getholdability來確定返回的ResultSet對象的保持能力作為默認(rèn)的保持能力是實(shí)現(xiàn)定義

附加的列以外的列定義為通過對給定的方法返回的ResultSet對象可以通過JDBC驅(qū)動程序廠商定義的,必須由他們的列標(biāo)簽的訪問租副。這使得未來的JDBC規(guī)范能夠如果需要現(xiàn)有的databasemetadata方法沒有顯著影響現(xiàn)有的應(yīng)用程序添加額外的列

7.6 事務(wù)支持

一小部分方法提供有關(guān)數(shù)據(jù)源支持的事務(wù)語義的信息坐慰。這一類的例子包括

  • supportsMultipleTransactions
  • getDefaultTransactionIsolation

7.7 新的方法

JDBC 4.2 API提供了以下新的databasemetadata方法:

  • supportsRefCursors
  • getMaxLogicalLobSize

7.8 已更新的方法

JDBC 4.2 API修改現(xiàn)有的databasemetadata方法的定義:

  • getIndexInfo
    以前返回CARDINALITY 和 PAGES 列現(xiàn)在返回一個long 類型的值

JDBC 4.2 API規(guī)范包括這些方法的更新定義。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末用僧,一起剝皮案震驚了整個濱河市结胀,隨后出現(xiàn)的幾起案子赞咙,更是在濱河造成了極大的恐慌,老刑警劉巖糟港,帶你破解...
    沈念sama閱讀 217,406評論 6 503
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件攀操,死亡現(xiàn)場離奇詭異,居然都是意外死亡秸抚,警方通過查閱死者的電腦和手機(jī)速和,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,732評論 3 393
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來剥汤,“玉大人颠放,你說我怎么就攤上這事⌒憬悖” “怎么了慈迈?”我有些...
    開封第一講書人閱讀 163,711評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長省有。 經(jīng)常有香客問我痒留,道長,這世上最難降的妖魔是什么蠢沿? 我笑而不...
    開封第一講書人閱讀 58,380評論 1 293
  • 正文 為了忘掉前任伸头,我火速辦了婚禮,結(jié)果婚禮上舷蟀,老公的妹妹穿的比我還像新娘恤磷。我一直安慰自己,他們只是感情好野宜,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,432評論 6 392
  • 文/花漫 我一把揭開白布干花。 她就那樣靜靜地躺著塘幅,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上馏锡,一...
    開封第一講書人閱讀 51,301評論 1 301
  • 那天历帚,我揣著相機(jī)與錄音股淡,去河邊找鬼沥潭。 笑死,一個胖子當(dāng)著我的面吹牛其徙,可吹牛的內(nèi)容都是我干的胚迫。 我是一名探鬼主播,決...
    沈念sama閱讀 40,145評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼唾那,長吁一口氣:“原來是場噩夢啊……” “哼访锻!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,008評論 0 276
  • 序言:老撾萬榮一對情侶失蹤朗若,失蹤者是張志新(化名)和其女友劉穎恼五,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體哭懈,經(jīng)...
    沈念sama閱讀 45,443評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡灾馒,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,649評論 3 334
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了遣总。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片睬罗。...
    茶點(diǎn)故事閱讀 39,795評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖旭斥,靈堂內(nèi)的尸體忽然破棺而出容达,到底是詐尸還是另有隱情,我是刑警寧澤垂券,帶...
    沈念sama閱讀 35,501評論 5 345
  • 正文 年R本政府宣布花盐,位于F島的核電站,受9級特大地震影響菇爪,放射性物質(zhì)發(fā)生泄漏算芯。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,119評論 3 328
  • 文/蒙蒙 一凳宙、第九天 我趴在偏房一處隱蔽的房頂上張望熙揍。 院中可真熱鬧,春花似錦氏涩、人聲如沸届囚。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,731評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽意系。三九已至,卻和暖如春饺汹,著一層夾襖步出監(jiān)牢的瞬間昔字,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,865評論 1 269
  • 我被黑心中介騙來泰國打工首繁, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人陨囊。 一個月前我還...
    沈念sama閱讀 47,899評論 2 370
  • 正文 我出身青樓弦疮,卻偏偏與公主長得像,于是被迫代替她去往敵國和親蜘醋。 傳聞我的和親對象是個殘疾皇子胁塞,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,724評論 2 354

推薦閱讀更多精彩內(nèi)容

  • 本節(jié)介紹Statement接口及其子類PreparedStatement和CallableStatement。 它...
    zlb閱讀 1,161評論 0 0
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法,類相關(guān)的語法啸罢,內(nèi)部類的語法编检,繼承相關(guān)的語法,異常的語法扰才,線程的語...
    子非魚_t_閱讀 31,630評論 18 399
  • 1. 簡介 1.1 什么是 MyBatis 允懂? MyBatis 是支持定制化 SQL、存儲過程以及高級映射的優(yōu)秀的...
    笨鳥慢飛閱讀 5,520評論 0 4
  • 偷懶方式 可以使用編輯器中自帶的sass插件來進(jìn)行直接開發(fā) 推薦閱讀:Sass入門 其他方式 1.安裝Ruby ...
    0安閱讀 169評論 0 0
  • 什么是未來衩匣?什么是愛蕾总?什么是夢想?什么是彼岸琅捏? 這一切生百,都不是我想要的! 睜開眼柄延,寶寶睡得正香蚀浆,小小的,肉嘟嘟的搜吧,...
    天黎琉璃閱讀 474評論 9 14