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

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

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

    兼容性

    第6章 兼容性

    這一章描述了JDBC類庫實現在各個兼容級別要支持的特性。一個JDBC類庫實現包含了一個JDBC驅動和底層數據源。兼容性定義了在驅動層之上要實現的特性。

    任何沒有提到的特性都是可選的。通常,如果底層數據源不支持,驅動不需要實現這個特性。

    6.1 定義

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

    • JDBC類庫實現 --- 一個JDBC驅動和它的底層數據源。驅動可能提供對底層數據源沒有實現的特性的支持。它也可能提供標準語法/語義到數據源本地類庫的映射。

    • 相關規范 --- 這個類庫規范以及其他相關的SQL規范。如果一個特性在多個文檔里被描述,我們應該考慮被排在最前面的文檔。對于JDBC 1.0類庫來說,相關的SQL規范包括SQL92和X/Open SQL CLI。對于JDBC2.0和3.0類庫,它包括SQL92加上SQL99和X/Open SQL CLI的相關部分。對于JDBC 4.0類庫,它包括SQL92以及SQL2003和X/Open SQL CLI的相關部分。

    • 支持特性 --- 在相關規范中定義了特性的標準語法和語義,JDBC類庫實現要按照語法和語義的規定支持這些特性。

    • 擴展 --- 一個沒有被相關規范定義的特性,或者是,相關規范中特性的非標準實現。

    • 完整實現 --- 一個接口的所有方法都被實現。

    • 需要的接口 --- 要支持的接口,但不一定要完整實現。接口里沒有實現的方法應拋出SQLException,說明不支持該特性。

    6.2 指導原則和要求

    下列指導原則適合所有級別的兼容性:

    • 一個JDBC類庫實現必須支持入門級別SQL92(Entry Level SQL92)和“Drop Table”SQL命令(請參照注意事項)。

    入門級別SQL92(Entry Level SQL92)是JDBC類庫實現要支持的最低SQL級別。對SQL99或SQL2003中特性的訪問應該與SQL99或SQL2003規范的相關部分一致。

    • 驅動必須支持轉義語法。轉義語法將在第13章“語句”中講述。

    • 驅動必須支持事務。詳見第9章“事務”。

    • 驅動應該提供對底層數據源所有特性的訪問,包括擴展了JDBC類庫的特性。如果一個特性沒有被支持,特性對應的方 法應該拋出SQLException。這樣使得JDBC程序可以訪問與本地應用相同的特性集。

    • 如果從DatabaseMetaData的方法得知驅動支持給定的特性,則驅動要保證特性的語法和語義應該跟相關規范一致。這意味著,如果數據源的本地類庫或語法與標準不一致,驅動要提供相應的映射。

    • 支持一個特性,還必須實現相關的元數據方法。例如,一個驅動支持RowSet接口,它還要實現RowSetMetaData接口。

    • 不支持一個特性,則對應的DatabaseMetaData方法要“拒絕訪問”:對不支持特性的方法的訪問要拋出SQLException。


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

    6.3 JDBC 1.0 類庫兼容性

    與JDBC 1.0 類庫兼容的驅動應滿足以下條件:

    • 遵守前述指導原則和要求
    • 完整實現下列接口:
      • 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 類庫兼容性

    與JDBC 2.0 類庫兼容的驅動應滿足以下條件:
    • 遵守JDBC 1.0 類庫需求
    • 在DatabaseMetaData中增加下列方法的實現:
      • deletesAreDetected
      • getConnection
      • getUDTs
      • insertsAreDetected
      • othersDeletesAreVisible
      • othersInsertsAreVisible
      • othersUpdateAreVisible
      • ownDeletesAreVisible
      • ownInsertsAreVisible
      • ownUpdatesAreVisible
      • supportsBatchUpdates
      • supportsResultSetConcurrency
      • supportsResultSetType
      • updatesAreDetected

    • 在ResultSetMetaData里增加下列方法的實現:
      • getColumnClassName
      • getColumnType
      • getColumnTypeName

    6.5 JDBC 3.0 類庫的兼容性

    與JDBC 3.0 類庫兼容的驅動應滿足以下條件:
    • 遵守JDBC 1.0 類庫需求
    • 包含下列需要的接口:
      • java.sql.ParameterMetaData
      • java.sql.Savepoint
    • 在DatabaseMetaData中增加下列方法的實現:
      • supportsSavepoints
      • supportsNamedParameters
      • supportsMultipleOpenResults
      • supportsGetGeneratedKeys
      • getSuperTypes
      • getSuperTables
      • getAttributes
      • getResultSetHoldability
      • supportsResultSetHoldability
      • getSQLStateType
      • getDatabaseMajorVersion
      • getDatabaseMinorVersion
      • getJDBCMajorVersion
      • getJDBCMinorVersion

    6.6 JDBC 4.0 類庫的兼容性

    與JDBC 4.0 類庫兼容的驅動應滿足以下條件:
    • 遵守JDBC 3.0 類庫需求
    • 包含下列需要的接口:
      • java.sql.RowId
      • java.sql.QueryObjectGenerator
      • java.sql.DataSet
    • 在DatabaseMetaData里增加下列方法的實現:
      • getRowIdLifetime
      • supportsStoredFunctionsUsingCallSyntax
      • providesQueryObjectGenerator


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

    6.7 決定兼容級別

    JDBC 類庫是Java平臺不可或缺的一部分。與JDBC類庫規范兼容是與整個平臺兼容的一個子集。


    注意 :在編寫這個文檔之際,還沒有獨立于平臺檢查JDBC類庫兼容級別的。

    6.8 不贊成使用的類庫

    不贊成使用是針對類、接口、構造器、方法或字段來說的,即不再被推薦使用,而且可能在將來某個版本不復存在。

    JDBC 2.0類庫中不贊成使用的構造器和方法: 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/兼容性  



    版權所有 羅明
    posted on 2005-10-06 11:17 羅明 閱讀(2385) 評論(0)  編輯  收藏 所屬分類: Java
     
    主站蜘蛛池模板: 亚洲一级在线观看| 亚洲av无码片vr一区二区三区| 亚洲女子高潮不断爆白浆| caoporn国产精品免费| 6080午夜一级毛片免费看| 免费人妻av无码专区| 亚洲第一香蕉视频| 草久免费在线观看网站| 国产成人yy免费视频| 成人亚洲性情网站WWW在线观看| 亚洲一区二区久久| 久久国产乱子伦精品免费午夜| 野花高清在线观看免费3中文| 国产亚洲视频在线播放| 亚洲熟妇无码一区二区三区 | 91亚洲精品麻豆| 日本特黄特色AAA大片免费| 999在线视频精品免费播放观看| 亚洲综合亚洲综合网成人| 亚洲av乱码一区二区三区 | 永久免费毛片在线播放| 亚洲色大成网站www永久一区| 亚洲人成色777777老人头| 日韩午夜理论免费TV影院| 亚洲人成网站18禁止一区| 亚洲人成网站在线播放2019| 免费人成网站在线观看不卡| 国产一区二区三区在线观看免费| 亚洲最大免费视频网| 91视频免费观看高清观看完整| 国产乱色精品成人免费视频| 亚洲字幕在线观看| 日韩免费在线观看视频| 亚洲精品无码99在线观看| 亚洲 欧洲 自拍 另类 校园| 97公开免费视频| 亚洲AV无码专区国产乱码电影 | 国产亚洲精品看片在线观看| 亚洲大码熟女在线观看| 日本在线高清免费爱做网站| 亚洲AV无码精品色午夜果冻不卡|