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

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

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

    兼容性

    第6章 兼容性

    這一章描述了JDBC類庫(kù)實(shí)現(xiàn)在各個(gè)兼容級(jí)別要支持的特性。一個(gè)JDBC類庫(kù)實(shí)現(xiàn)包含了一個(gè)JDBC驅(qū)動(dòng)和底層數(shù)據(jù)源。兼容性定義了在驅(qū)動(dòng)層之上要實(shí)現(xiàn)的特性。

    任何沒有提到的特性都是可選的。通常,如果底層數(shù)據(jù)源不支持,驅(qū)動(dòng)不需要實(shí)現(xiàn)這個(gè)特性。

    6.1 定義

    為了避免混淆,我們將在兼容性的討論中使用以下術(shù)語(yǔ):

    • JDBC類庫(kù)實(shí)現(xiàn) --- 一個(gè)JDBC驅(qū)動(dòng)和它的底層數(shù)據(jù)源。驅(qū)動(dòng)可能提供對(duì)底層數(shù)據(jù)源沒有實(shí)現(xiàn)的特性的支持。它也可能提供標(biāo)準(zhǔn)語(yǔ)法/語(yǔ)義到數(shù)據(jù)源本地類庫(kù)的映射。

    • 相關(guān)規(guī)范 --- 這個(gè)類庫(kù)規(guī)范以及其他相關(guān)的SQL規(guī)范。如果一個(gè)特性在多個(gè)文檔里被描述,我們應(yīng)該考慮被排在最前面的文檔。對(duì)于JDBC 1.0類庫(kù)來(lái)說(shuō),相關(guān)的SQL規(guī)范包括SQL92和X/Open SQL CLI。對(duì)于JDBC2.0和3.0類庫(kù),它包括SQL92加上SQL99和X/Open SQL CLI的相關(guān)部分。對(duì)于JDBC 4.0類庫(kù),它包括SQL92以及SQL2003和X/Open SQL CLI的相關(guān)部分。

    • 支持特性 --- 在相關(guān)規(guī)范中定義了特性的標(biāo)準(zhǔn)語(yǔ)法和語(yǔ)義,JDBC類庫(kù)實(shí)現(xiàn)要按照語(yǔ)法和語(yǔ)義的規(guī)定支持這些特性。

    • 擴(kuò)展 --- 一個(gè)沒有被相關(guān)規(guī)范定義的特性,或者是,相關(guān)規(guī)范中特性的非標(biāo)準(zhǔn)實(shí)現(xiàn)。

    • 完整實(shí)現(xiàn) --- 一個(gè)接口的所有方法都被實(shí)現(xiàn)。

    • 需要的接口 --- 要支持的接口,但不一定要完整實(shí)現(xiàn)。接口里沒有實(shí)現(xiàn)的方法應(yīng)拋出SQLException,說(shuō)明不支持該特性。

    6.2 指導(dǎo)原則和要求

    下列指導(dǎo)原則適合所有級(jí)別的兼容性:

    • 一個(gè)JDBC類庫(kù)實(shí)現(xiàn)必須支持入門級(jí)別SQL92(Entry Level SQL92)和“Drop Table”SQL命令(請(qǐng)參照注意事項(xiàng))。

    入門級(jí)別SQL92(Entry Level SQL92)是JDBC類庫(kù)實(shí)現(xiàn)要支持的最低SQL級(jí)別。對(duì)SQL99或SQL2003中特性的訪問(wèn)應(yīng)該與SQL99或SQL2003規(guī)范的相關(guān)部分一致。

    • 驅(qū)動(dòng)必須支持轉(zhuǎn)義語(yǔ)法。轉(zhuǎn)義語(yǔ)法將在第13章“語(yǔ)句”中講述。

    • 驅(qū)動(dòng)必須支持事務(wù)。詳見第9章“事務(wù)”。

    • 驅(qū)動(dòng)應(yīng)該提供對(duì)底層數(shù)據(jù)源所有特性的訪問(wèn),包括擴(kuò)展了JDBC類庫(kù)的特性。如果一個(gè)特性沒有被支持,特性對(duì)應(yīng)的方 法應(yīng)該拋出SQLException。這樣使得JDBC程序可以訪問(wèn)與本地應(yīng)用相同的特性集。

    • 如果從DatabaseMetaData的方法得知驅(qū)動(dòng)支持給定的特性,則驅(qū)動(dòng)要保證特性的語(yǔ)法和語(yǔ)義應(yīng)該跟相關(guān)規(guī)范一致。這意味著,如果數(shù)據(jù)源的本地類庫(kù)或語(yǔ)法與標(biāo)準(zhǔn)不一致,驅(qū)動(dòng)要提供相應(yīng)的映射。

    • 支持一個(gè)特性,還必須實(shí)現(xiàn)相關(guān)的元數(shù)據(jù)方法。例如,一個(gè)驅(qū)動(dòng)支持RowSet接口,它還要實(shí)現(xiàn)RowSetMetaData接口。

    • 不支持一個(gè)特性,則對(duì)應(yīng)的DatabaseMetaData方法要“拒絕訪問(wèn)”:對(duì)不支持特性的方法的訪問(wèn)要拋出SQLException。


    注意 :JDBC類庫(kù)實(shí)現(xiàn)要支持“SQL92 - 過(guò)渡級(jí)別”中定義的DROP TABLE命令,但對(duì)CASCADE和RESTRICT選項(xiàng)的支持 是可選的。而且,當(dāng)要被刪除的表有視圖(views)和完整性約束時(shí),DROP TABLE的行為也是實(shí)現(xiàn)類庫(kù)的廠商自己定義的。

    6.3 JDBC 1.0 類庫(kù)兼容性

    與JDBC 1.0 類庫(kù)兼容的驅(qū)動(dòng)應(yīng)滿足以下條件:

    • 遵守前述指導(dǎo)原則和要求
    • 完整實(shí)現(xiàn)下列接口:
      • java.sql.Driver
      • java.sql.DatabaseMetaData(除了在高版本中引入的方法)
      • java.sql.ResultSetMetaData(除了在高版本中引入的方法)
    • 包含下列需要的接口(“需要的接口”的定義見6.1)
      • java.sql.CallableStatement
      • java.sql.Connection
      • java.sql.PreparedStatement
      • java.sql.ResultSet
      • java.sql.Statement

    6.4 JDBC 2.0 類庫(kù)兼容性

    與JDBC 2.0 類庫(kù)兼容的驅(qū)動(dòng)應(yīng)滿足以下條件:
    • 遵守JDBC 1.0 類庫(kù)需求
    • 在DatabaseMetaData中增加下列方法的實(shí)現(xiàn):
      • deletesAreDetected
      • getConnection
      • getUDTs
      • insertsAreDetected
      • othersDeletesAreVisible
      • othersInsertsAreVisible
      • othersUpdateAreVisible
      • ownDeletesAreVisible
      • ownInsertsAreVisible
      • ownUpdatesAreVisible
      • supportsBatchUpdates
      • supportsResultSetConcurrency
      • supportsResultSetType
      • updatesAreDetected

    • 在ResultSetMetaData里增加下列方法的實(shí)現(xiàn):
      • getColumnClassName
      • getColumnType
      • getColumnTypeName

    6.5 JDBC 3.0 類庫(kù)的兼容性

    與JDBC 3.0 類庫(kù)兼容的驅(qū)動(dòng)應(yīng)滿足以下條件:
    • 遵守JDBC 1.0 類庫(kù)需求
    • 包含下列需要的接口:
      • java.sql.ParameterMetaData
      • java.sql.Savepoint
    • 在DatabaseMetaData中增加下列方法的實(shí)現(xiàn):
      • supportsSavepoints
      • supportsNamedParameters
      • supportsMultipleOpenResults
      • supportsGetGeneratedKeys
      • getSuperTypes
      • getSuperTables
      • getAttributes
      • getResultSetHoldability
      • supportsResultSetHoldability
      • getSQLStateType
      • getDatabaseMajorVersion
      • getDatabaseMinorVersion
      • getJDBCMajorVersion
      • getJDBCMinorVersion

    6.6 JDBC 4.0 類庫(kù)的兼容性

    與JDBC 4.0 類庫(kù)兼容的驅(qū)動(dòng)應(yīng)滿足以下條件:
    • 遵守JDBC 3.0 類庫(kù)需求
    • 包含下列需要的接口:
      • java.sql.RowId
      • java.sql.QueryObjectGenerator
      • java.sql.DataSet
    • 在DatabaseMetaData里增加下列方法的實(shí)現(xiàn):
      • getRowIdLifetime
      • supportsStoredFunctionsUsingCallSyntax
      • providesQueryObjectGenerator


    注意 :這一段將在下一版草案更新

    6.7 決定兼容級(jí)別

    JDBC 類庫(kù)是Java平臺(tái)不可或缺的一部分。與JDBC類庫(kù)規(guī)范兼容是與整個(gè)平臺(tái)兼容的一個(gè)子集。


    注意 :在編寫這個(gè)文檔之際,還沒有獨(dú)立于平臺(tái)檢查JDBC類庫(kù)兼容級(jí)別的。

    6.8 不贊成使用的類庫(kù)

    不贊成使用是針對(duì)類、接口、構(gòu)造器、方法或字段來(lái)說(shuō)的,即不再被推薦使用,而且可能在將來(lái)某個(gè)版本不復(fù)存在。

    JDBC 2.0類庫(kù)中不贊成使用的構(gòu)造器和方法: java.sql.CallableStatement.getBigDecimal(int, int)

    java.sql.Date(int, int, int)
    java.sql.Date.getHours()
    java.sql.Date.getMinutes()
    java.sql.Date.getSeconds()
    java.sql.Date.setHours(int)
    java.sql.Date.setMinutes(int)
    java.sql.Date.setSeconds(int)

    java.sql.DriverManager.getLogStream()
    java.sql.DriverManager.setLogStream(PrintStream?)

    java.sql.PreparedStatement.setUnicodeStream(int, InputStream?, int)

    java.sql.ResultSet.getBigDecimal(int, int)
    java.sql.ResultSet.getBigDecimal(String, int)
    java.sql.ResultSet.getUnicodeStream(int)
    java.sql.ResultSet.getUnicodeStream(String)

    java.sql.Time(int, int, int)
    java.sql.Time.getDate()
    java.sql.Time.getDay()
    java.sql.Time.getMonth()
    java.sql.Time.getYear()
    java.sql.Time.setDate(int)
    java.sql.Time.setMonth(int)
    java.sql.Time.setYear(int)

    java.sql.Timestamp(int, int, int, int, int, int, int)

    也可參考http://www.pgsqldb.org/twiki/bin/view/PgSQL/兼容性



    版權(quán)所有 羅明
    posted on 2005-10-06 19:25 羅明 閱讀(234) 評(píng)論(0)  編輯  收藏

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
     
    主站蜘蛛池模板: 亚洲人精品午夜射精日韩| 成人永久免费高清| 久久青草亚洲AV无码麻豆| 久久一区二区免费播放| 在线精品亚洲一区二区三区| 日韩免费在线中文字幕| 亚洲国产综合精品一区在线播放| 在线精品自拍亚洲第一区| 亚洲精品无码午夜福利中文字幕| 乱人伦中文视频在线观看免费| 一级成人a做片免费| 亚洲精品视频免费| 人妻免费久久久久久久了| 亚洲综合色自拍一区| 黄色网站软件app在线观看免费| 在线观看免费为成年视频| 亚洲国产精品成人AV在线| 国产啪精品视频网站免费尤物| 国产亚洲精品a在线无码| 污污网站18禁在线永久免费观看| 亚洲成网777777国产精品| 久久嫩草影院免费看夜色| 亚洲国产成人精品不卡青青草原| 亚洲免费视频网站| 亚洲中文字幕日本无线码| 日韩免费一级毛片| 国产精品小视频免费无限app | 黄色毛片免费在线观看| 亚洲国产成人久久笫一页| 日本免费在线观看| 亚洲综合欧美色五月俺也去| 亚洲精品岛国片在线观看| 日韩免费无码视频一区二区三区 | 中文字幕一区二区免费| 亚洲国产精品尤物yw在线 | 国产精品99久久免费| 一区二区三区视频免费观看| 亚洲一区二区三区首页| 免费精品一区二区三区第35| 亚洲一级在线观看| 国产福利在线免费|