<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    數(shù)據(jù)庫(kù)元數(shù)據(jù)

    第7章 數(shù)據(jù)庫(kù)元數(shù)據(jù)

    JDBC驅(qū)動(dòng)通過(guò)實(shí)現(xiàn)DatabaseMetaData接口來(lái)提供底層數(shù)據(jù)源的信息。DatabaseMetaData接口主要被應(yīng)用服務(wù)器和工具使用,以此決定怎樣跟給定數(shù)據(jù)源交互。普通應(yīng)用也可以通過(guò)DatabaseMetaData的方法得到數(shù)據(jù)源的信息,但這不常用。

    DatabaseMetaData?接口有超過(guò)150個(gè)方法,根據(jù)提供的信息可以分為以下幾類:

    • 提供數(shù)據(jù)源的一般信息
    • 判斷數(shù)據(jù)源是否支持某種特性或具有某種能力
    • 數(shù)據(jù)源的限制
    • 數(shù)據(jù)源包含哪些SQL對(duì)象以及這些對(duì)象的屬性
    • 數(shù)據(jù)源提供的事務(wù)支持

    DatabaseMetaData?接口還有超過(guò)40個(gè)字段,這些字段用于DatabaseMetaData中各種方法的常量返回值。

    這一章粗略介紹一下DatabaseMetaData接口,通過(guò)舉例子對(duì)元數(shù)據(jù)方法進(jìn)行分類,同時(shí)介紹一些新的方法。詳細(xì)介紹請(qǐng)參考JDBC 4.0 類庫(kù)規(guī)范

    JDBC中的ResultSetMetaData接口將在第15章“結(jié)果集”介紹。

    7.1 創(chuàng)建DatabaseMetaData對(duì)象

    DatabaseMetaData?對(duì)象由Connection的getMetaData方法創(chuàng)建,然后我們可以利用它來(lái)動(dòng)態(tài)獲取底層數(shù)據(jù)源的信息。代碼示例 7-1 創(chuàng)建了一個(gè)DatabaseMetaData對(duì)象,并用它來(lái)查看表名允許的最大字符數(shù)。

    // con是一個(gè)Connection對(duì)象
    DatabaseMetaData dbmd = con.getMetadata();
    int maxLen = dbmd.getMaxTableNameLength();
    

    代碼示例 7-1 創(chuàng)建和使用DatabaseMetaData對(duì)象

    7.2 獲取一般信息

    DatabaseMetaData?中有一類方法用于獲取底層數(shù)據(jù)源的一般信息,或者它的一些實(shí)現(xiàn)細(xì)節(jié)。這類方法有:
    • getURL
    • getUserName
    • getDatabaseProductVersion, getDriverMajorVersion 和 getDriverMinorVersion
    • getSchemaTerm, getCatalogTerm 和 getProcedureTerm
    • nullsAreSortedHigh 和 nullsAreSortedLow
    • usesLocalFiles 和 usesLocalFilePerTable
    • getSQLKeywords

    7.3 查看支持的特性

    大量DatabaseMetaData方法可以用來(lái)判斷驅(qū)動(dòng)或底層數(shù)據(jù)源是否支持某個(gè)特性或特性集。還有一些方法可以告知提供支持的級(jí)別。

    判斷是否支持某個(gè)特性的方法如下:

    • supportsAlterTableWithDropColumn
    • supportsBatchUpdates
    • supportsTableCorrelationNames
    • supportsPositionedDelete
    • supportsFullOuterJoins
    • supportsStoredProcedures
    • supportsMixedCaseQuotedIdentifiers

    查看特性支持級(jí)別的方法:

    • supportsANSI92EntryLevelSQL
    • supportsCoreSQLGrammar

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

    另一組方法提供數(shù)據(jù)源對(duì)操作的限制信息,如下:
    • getMaxRowSize
    • getMaxStatementLength
    • getMaxTablesInSelect
    • getMaxConnections
    • getMaxCharLiteralLength
    • getMaxColumnsInTable

    方法返回一個(gè)整型的限制數(shù)。0表示沒(méi)有限制或未知限制。

    7.5 SQL對(duì)象及其屬性

    DatabaseMetaData?中有一組方法提供組成數(shù)據(jù)源之SQL對(duì)象的信息。這組方法也包含獲取SQL對(duì)象屬性的方法。方法的返回值是一個(gè)ResultSet,ResultSet的每一行代表一個(gè)特定對(duì)象。例如,getUDTs方法返回的ResultSet里每一行都是數(shù)據(jù)源里定義的一個(gè)UDT(user-defined type)。這類方法主要有:
    • getSchemas
    • getCatalogs
    • getTables
    • getPrimaryKeys
    • getProcedures
    • getProcedureColumns
    • getUDTs

    7.6 事務(wù)支持

    一小部分方法提供數(shù)據(jù)源所支持事務(wù)的語(yǔ)義信息。這類方法主要有:
    • supportsMultipleTransactions
    • getDefaultTransactionIsolation

    7.7 新增方法

    JDBC 4.0 類庫(kù)在DatabaseMetaData中引入了下列新方法:
    • getSchemas --- 重載了已有的getSchemas方法,使用目錄和模式作為參數(shù)。
    • supportsStoredFunctionsUsingCallSyntax --- 判斷用戶或廠商自定義的方法是否可以使用存儲(chǔ)過(guò)程轉(zhuǎn)義語(yǔ)法來(lái)調(diào)用。
    • autoCommitFailureClosesAllResultSets --- 當(dāng)autoCommit設(shè)置為true時(shí),標(biāo)示程序錯(cuò)誤拋出SQLException后是否所有打開(kāi)著的結(jié)果集(包括持久(holdable)結(jié)果集)都被關(guān)閉。
    • providesQueryObjectGenerator --- 標(biāo)示JDBC驅(qū)動(dòng)是否提供自己的QueryObjectGenerator實(shí)現(xiàn)。
    • getClientInfoProperties --- 獲取驅(qū)動(dòng)支持的客戶端屬性列表。

    這些方法的完整定義見(jiàn)JDBC 4.0 類庫(kù)規(guī)范(javadoc)。

    7.8 經(jīng)過(guò)修改的方法

    JDBC 4.0 類庫(kù)修改了DatabaseMetaData中下列方法的定義:
    • getTypeInfo --- 如果數(shù)據(jù)庫(kù)支持SQL distinct類型,則getTypeInfo()返回一行TYPE_NAME字段為DISTINCT,DATA_TYPE字段為Types.DISTINCT的數(shù)據(jù)。如果數(shù)據(jù)庫(kù)支持SQL結(jié)構(gòu)化類型,則getTypeInfo()返回一行TYPE_NAME字段為STRUCT、DATA_TYPE為Types.STRUCT的數(shù)據(jù)。也添加了對(duì)SQLXML和ROWID這些新的數(shù)據(jù)類型的支持。
    (原文:Clarified to indicate that if the database supports SQL distinct types, then getTypeInfo() will return a single row with a TYPE_NAME of DISTINCT and a DATA_TYPE of Types.DISTINCT. If the database supports SQL structured types, then getTypeInfo() will return a single row with a TYPE_NAME of STRUCT and a DATA_TYPE of Types.STRUCT. Support has also been added for the new data types SQLXML and ROWID.)

    • getCrossReference --- 得到給定外鍵表中外鍵列的描述信息,從父表返回的列數(shù)應(yīng)該匹配外鍵列數(shù)。它們按照FKTABLE_CAT, FKTABLE_SCHEM, FKTABLE_NAME 和 KEY_SEQ排序。
    (原文:Clarified that the method retrieves a description of the foreign key columns in the given foreign key table that reference the primary key or the unique constraint columns of the parent table (could be the same or a different table). The number of columns returned from the parent table must match the number of columns that make up the foreign key. They are ordered by FKTABLE_CAT, FKTABLE_SCHEM, FKTABLE_NAME, and KEY_SEQ.)

    • getColumns --- 闡明當(dāng)COLUMN_DEF的返回值被引號(hào)括起來(lái)時(shí),它應(yīng)該被解釋為一個(gè)字符串。
    (Clarified that the return value for COLUMN_DEF that the default value for the column, should be interpreted as a string when the value is enclosed in quotes.)

    • getProcedures --- 添加了SPECIFIC_NAME列。返回行按照PROCEDURE_SCHEM,PROCEDURE_NAME 和 SPECIFIC_NAME 排序。

    • getProcedureColumns --- 添加了COLUMN_DEF,SQL_DATATYPE,SQL_DATETIME_SUB,CHAR_OCTET_LENGTH,ORDINAL_POSITION,IS_NULLABLE 和 SPECIFIC_NAME列。返回行按照PROCEDURE_SCHEM,PROCEDURE_NAME 和 SPECIFIC_NAME 排序。

    JDBC 4.0 類庫(kù)規(guī)范中有這些方法更新后的定義。

    翻譯進(jìn)度請(qǐng)參考http://www.pgsqldb.org/twiki/bin/view/PgSQL/JDBC4說(shuō)明書



    版權(quán)所有 羅明
    posted on 2005-10-06 13:45 羅明 閱讀(3200) 評(píng)論(0)  編輯  收藏 所屬分類: Java
     
    主站蜘蛛池模板: 日韩亚洲人成在线综合| a视频在线观看免费| 亚洲国产香蕉人人爽成AV片久久| 丰满妇女做a级毛片免费观看| 久久精品国产亚洲沈樵| 国产精品免费观看| 黄色片网站在线免费观看| 亚洲成在人天堂在线| 日本高清免费中文字幕不卡| 亚洲国产免费综合| 激情亚洲一区国产精品| 久久夜色精品国产亚洲av| 99国产精品永久免费视频| 亚洲精品视频免费观看| 亚洲av永久无码精品三区在线4 | 免费看h片的网站| 国产亚洲福利精品一区二区| 亚洲AV日韩AV永久无码免下载| 无码一区二区三区免费视频| 中文字幕不卡高清免费| 亚洲欧美成人av在线观看 | 免费国产污网站在线观看不要卡| 亚洲高清在线观看| jjzz亚洲亚洲女人| 91频在线观看免费大全| 少妇性饥渴无码A区免费 | 国产精品国产午夜免费福利看| 免费国产成人午夜在线观看| 豆国产96在线|亚洲| 亚洲无线一二三四区| 亚洲人成色77777| 青青青国产色视频在线观看国产亚洲欧洲国产综合 | 夜夜爽免费888视频| 久久国产高潮流白浆免费观看| 一级做a免费视频观看网站| 亚洲色欲啪啪久久WWW综合网| 精品无码一区二区三区亚洲桃色| AV在线播放日韩亚洲欧| 四虎永久免费观看| 亚洲人成综合在线播放| 久久精品亚洲综合专区|