JDBC 記錄

          Posted on 2011-11-10 13:31 cuicn 閱讀(228) 評論(1)  編輯  收藏
          Sun 制定了兩套接口。應(yīng)用程序開發(fā)者使用JDBC API,而數(shù)據(jù)庫提供商和工具開發(fā)商使用JDBC驅(qū)動API。
          JDBC和ODBC基于同一個思想:根據(jù)API編寫的程序都可以與驅(qū)動管理器進行通信,而驅(qū)動管理器則通過插入其中的驅(qū)動程序與實際數(shù)據(jù)庫進行通信。
          JDBC驅(qū)動程序分類:
          1、驅(qū)動程序?qū)DBC翻譯成ODBC,然后使用一個ODBC驅(qū)動程序與數(shù)據(jù)庫進行通信。JDK中包含了一個程序:JDBC/ODBC橋。不建議使用。
          2、由部分Java程序和部分本地代碼組成,用于與數(shù)據(jù)庫的客戶端API進行通信。在使用這種驅(qū)動之前,不僅要安裝Java類庫,還需要安裝一些與平臺相關(guān)的代碼。
          3、純Java類庫,使用一種與具體數(shù)據(jù)庫無關(guān)的協(xié)議將數(shù)據(jù)庫請求發(fā)送給服務(wù)器構(gòu)件,然后該構(gòu)件再將數(shù)據(jù)庫請求翻譯成特定數(shù)據(jù)庫協(xié)議。
          4、純Java類庫,將JDBC請求直接翻譯成特定的數(shù)據(jù)庫協(xié)議。
          JDBC最終實現(xiàn)了一下目標(biāo):
          1、通過使用SQL語句程序員可以利用Java語言開發(fā)訪問數(shù)據(jù)庫的應(yīng)用。
          2、數(shù)據(jù)庫供應(yīng)商和數(shù)據(jù)庫工具開發(fā)商可以提供底層的驅(qū)動程序。因此,他們有能力優(yōu)化各自數(shù)據(jù)庫產(chǎn)品的驅(qū)動程序。
          JDBC常用接口和類:
          JDBC提供了獨立于數(shù)據(jù)庫的統(tǒng)一API,用以執(zhí)行SQL命令。JDBC API由以下常用的接口和類:
          DriverManager:
          用于管理JDBC驅(qū)動的服務(wù)類。程序中使用該類的主要功能是獲取Connection對象,該類包含如下方法:
          public static sysnchronized Connection getConnection(String url,String user,String pass) throws SQLException:該方法獲得url對應(yīng)數(shù)據(jù)庫的連接。
          Connection:
          代表數(shù)據(jù)連接對象,每個Connection代表一個物理連接會話。要想訪問數(shù)據(jù)庫,必須先獲得數(shù)據(jù)庫連接。該接口的常用方法有:
          Statement createStatement() throws SQLException:返回一個Statement對象。
          PreparedStatement prepareStatement(String sql) throws SQLException:返回預(yù)編譯的Statement對象,即將SQL語句提交到數(shù)據(jù)庫進行預(yù)編譯。
          CallableStatement  prepareCall(String sql) throws SQLException:返回CallableStatement對象,該對象用于調(diào)用存儲過程。
          上面三個方法都是返回用于執(zhí)行SQL語句的Statement對象,PreparedStatement、CallableStatement是Statement的子類。只有獲得Statement之后才可以執(zhí)行SQL語句。
          初次之外,Connection還有如下用于控制事務(wù)的方法:
          Savepoint setSavepoint():創(chuàng)建一個保存點。
          Savepoint setSavepoint(String name):以制定名稱來創(chuàng)建一個保存點。
          void setTransactionIsolation(int level):設(shè)置事務(wù)隔離級別。
          void rollback():回滾事務(wù)。
          void rollback(Savepoint savepoint):將事務(wù)回滾到指定的保存點。
          void setAutoCommit(boolean autoCommit):關(guān)閉自動提交,打開事務(wù)。
          void commit():提交事務(wù)。
          Statement:
          用于執(zhí)行SQL語句的工具接口。該對象既可以用于執(zhí)行DDL、DCL語句,也可以用于執(zhí)行DML語句,還可用于執(zhí)行SQL查詢。當(dāng)執(zhí)行SQL查詢時,返回查詢到的結(jié)果集。常用方法:
          ResultSet  executeQuery(String sql) throws SQLException:用于執(zhí)行查詢語句,并返回查詢結(jié)果對應(yīng)的ResultSet對象。該方法只能用于執(zhí)行查詢語句。
          int executeUpdate(String sql) throws SQLException:用于執(zhí)行DML語句,并返回受影響的行數(shù);方法可以用于執(zhí)行DDL,執(zhí)行DDL將返回0。
          boolean execute(String sql) throws SQLException:該方法可執(zhí)行任何SQL語句。如果執(zhí)行后第一個結(jié)果為ResultSet對象,則返回true;如果執(zhí)行后第一個結(jié)果為受影響的行數(shù)或沒有任何結(jié)果,則返回false。
          PreparedStatement:
          預(yù)編譯的Statement對象。PreparedStatement是Statement的子接口,它允許數(shù)據(jù)庫預(yù)編譯SQL語句,以后每次只改變SQL命令的參數(shù),避免數(shù)據(jù)庫每次都需要編譯SQL語句,因此性能更好。相對于Statement而言,使用PreparedStatement執(zhí)行SQL語句時,無須傳入SQL參數(shù),因為它已經(jīng)預(yù)編譯了SQL語句。但PreparedStatement需要為預(yù)編譯的SQL語句傳入?yún)?shù)值,所以它比Statement多了如下方法:
          void SetXxx(int parameterIndex,Xxx value):該方法根據(jù)傳入?yún)?shù)的類型不同,需要使用不同的方法。傳入的值根據(jù)索引傳給SQL語句中指定為位置的參數(shù)。
          PreparedStatement同樣有executeUpdate、executeQuery和execute三個方法,只是三個方法無須接受SQL字符串,因為PreparedStatement對象已經(jīng)預(yù)編譯了SQL命令,只要為這些命令傳入?yún)?shù)即可。
          ResultSet:
          結(jié)果集對象。該對象包含訪問查詢結(jié)果的方法,ResultSet可以通過列索引或列名稱獲得列數(shù)據(jù)。它常用方法如下:
          void close() throws SQLException:釋放ResultSet對象。
          boolean absolute(int row):將結(jié)果集移動到第幾行,如果row 是負數(shù),則移動到倒數(shù)第幾行。如果移動后的記錄指針指向一條有效記錄,則該方法返回true。
          void beforeFirst():將ResultSet的記錄指針定位到首行之前,這是ResultSet結(jié)果集記錄指針的初始狀態(tài):記錄指針的起始位置位于第一行之前。
          boolean first():將ResultSet的記錄指針定位到首行。
          boolean previous():將ResultSet的記錄指針定位到上一行。
          boolean next():定位到下一行。
          boolean last():定位到最后一行。
          void afterLast():定位最后一行之后。

          Feedback

          # re: JDBC 記錄  回復(fù)  更多評論   

          2011-11-16 09:26 by cuiin
          測試111

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


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 上饶市| 南阳市| 乌兰县| 友谊县| 冀州市| 邛崃市| 长兴县| 华亭县| 旺苍县| 宁陕县| 大兴区| 焉耆| 霞浦县| 长沙市| 定南县| 五河县| 三都| 六盘水市| 安多县| 栖霞市| 江华| 威远县| 镇平县| 塔河县| 尼木县| 临沂市| 临城县| 蒲江县| 静海县| 威海市| 江孜县| 穆棱市| 马关县| 曲沃县| 图们市| 溆浦县| 随州市| 怀集县| 韶山市| 三明市| 九江市|