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

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

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

    雅典之夏的小站
    知人者智 自知者明 Fighting!!
    JSP調用JDBC API訪問數據庫管理系統是通過以下五個步驟來實現的:



    (1)加載特定的JDBC驅動程序



    為了與特定的數據源連接,JDBC必須加載相應的驅動程序。這些驅動程序都是通過語句:Class.forName("Driver Name"); 來加載的。這里面有一個小技巧,我們可以在”Driver Name”出填入一系列的驅動程序名稱,例如:“Class.forName("sun.jdbc.odbc.JdbcOdbcDriver:oracle.jdbc.driver.OracleDriver”); 中間用冒號隔開。JSP將按照列表順序搜索驅動程序,并且加載第一個能與給定的URL相連的驅動程序。在搜索驅動程序列表時,JSP將跳過包含不可信任代碼的驅動程序,除非他與要打開的數據庫管理系統是來源于同一處.



    (2)用已注冊的驅動程序建立到數據庫管理系統的連接



    我們要做的第二步是用已經注冊的驅動程序建立到數據庫管理系統的連接,這要通過DriverManager類的getConncetion方法來實現。這里特別需要注意的是String類型 url 參數的取值,url代表一個將要連接的特定的數據庫管理系統的數據源。使用不同的數據庫驅動程序,url的取值方式是不同的。例程中加載了“com.mysql.jdbc.Driver”驅動,url的取值方式“jdbc:mysql://localhost:3306/ums_db?useUnicode=true&amp;characterEncoding=GB2312”,如果加載“oracle.jdbc.driver.OracleDriver”驅動,url的取值方式應該是“jdbc:oracle:thin:@host name:port number:service name”。其他驅動程序的url的取值方式,各位自行參閱相應的文擋。

    例程中的GetConnection()方法只有一個參數String url,代表ODBC數據源,如果連接大型數據庫,則需要三個參數:String url、Strng user、String password。User和password代表數據庫管理系統的用戶名和口令。一般的大型數據庫如Oracle、MS SQL Server、DB2等用戶名和口令是必須的。而小型的數據庫如ACCESS、Foxpro等并不需要。

    如果連接成功,則會返回一個Connection類的對象con。以后對數據庫的操作都是建立在con對象的基礎上的。GetConnection()方法是DriverManager類的靜態方法,使用時不用生成DriverManager類的對象,直接使用類名DriverManager就可以調用。



    (3)創建Statement聲明,執行SQL語句



    在實例化一個Connection類的對象con,成功建立一個到數據庫管理系統的連接之后。我們要做的第三步是利用該con對象生成一個Statement類的對象stmt。該對象負責將SQL語句傳遞給數據庫管理系統執行,如果SQL語句產生結果集,stmt對象還會將結果集返回給一個ResultSet類的對象。

    Statement類的主要的方法有三個:

    executeUpdate(String sql)

    executeQuery(String sql)

    execute(String sql)

    executeUpdate(String sql)方法用于執行DDL類型的SQL語句,這種類型的SQL語句會對數據庫管理系統的對象進行創建、修改、刪除操作,一般不會返回結果集。



    executeQuery(String sql)方法用于執行一條查詢數據庫的SELECT語句。如果有符合查詢條件的數據存在,該方法將返回一個包含相應數據的ResultSet類對象,否則,該對象的next()方法將返回false。



    execute(String sql)方法用于執行一個可能返回多個結果集的存儲過程(Stored Procedure)或者一條動態生成的不知道結果集個數的SQL語句。如果存儲過程或者SQL語句產生一個結果集,該方法返回false.如果產生多個結果集,該方法返回true。我們可以綜合運用Statement類的getResultSet(), getUpdateCount(), getMoreResults()方法來檢索不同的結果集。

    服務器對JSP程序進行編譯時,并不對將要執行的SQL語句作語法檢查,只是將其作為一個String對象。只有當客戶端發出HTTP請求,Java虛擬機對Servlet進行解釋執行,將SQL語句傳遞給數據庫管理系統時,才能知道他是否正確。對于錯誤的SQL語句,在執行時會產生SQLExcepion。其實,所有與JDBC操作的JSP語句都與數據庫管理系統及相應的驅動程序有關,是超出JSP的控制范圍的。這些語句只有在實際的解釋執行中才能檢驗出是否能順利執行,因此一定要聲明并捕獲例外:

    try{

    ….

    }catch(SQLException e)

    {

    Sytem.err.println(“SQLException:”+e.getMessage());

    }

    否則,JSP程序無法被編譯成Servlet。



    (4)關閉Statement對象



    一個Statement對象在打開后可以多次調用executeQuery(String sql)、executeUpdate(String sql)、execute(String sql)方法來執行SQL語句,與數據庫管理系統進行交互。但一個Statement對象在同一時間只能打開一個結果集,對第二個結果集的打開隱含著對第一個結果集的關閉。如果想對多個結果集同時進行操作,必須創建多個Statement對象,在每個Statement對象上執行SQL語句獲得相應的結果集。



    (5)關閉Connection對象



    在處理完對數據庫的操作后,一定要將Connection對象關閉,以釋放JDBC占用的系統資源。在不關閉Connection對象的前提下再次用DriverManager靜態類初始化新的Connection對象會產生系統錯誤。而一個已經建立連接的Connection對象可以同時初始化多個Statement對象。對應不同的數據庫管理系統的Connection對象可以初始化Statement對象的個數是不同的。在Oracle中是50個。
    posted on 2005-10-27 12:51 rkind 閱讀(190) 評論(0)  編輯  收藏 所屬分類: JAVA基礎&數據庫
    主站蜘蛛池模板: 亚洲欧洲在线观看| 亚洲国产成人a精品不卡在线| 亚洲av无码无在线观看红杏| 少妇亚洲免费精品| 亚洲精品国产精品国自产观看| 亚洲av无码兔费综合| 国产又长又粗又爽免费视频| 性色av极品无码专区亚洲| 国产一卡二卡≡卡四卡免费乱码| 亚洲av成人中文无码专区| 国产免费人成视频在线观看| 免费精品国产自产拍在线观看| 亚洲高清无码综合性爱视频| fc2免费人成在线视频| 亚洲国产精品成人精品无码区| 久久国产乱子伦精品免费不卡 | 亚洲午夜成激人情在线影院| 四虎在线最新永久免费| 亚洲中文字幕无码久久| 日本二区免费一片黄2019| 一级毛片试看60分钟免费播放| 中文字幕亚洲一区二区va在线| 青青操免费在线视频| 久久亚洲精品无码aⅴ大香| 在线观看成人免费视频不卡| 亚洲爆乳无码精品AAA片蜜桃| 又粗又大又长又爽免费视频| 国产又黄又爽又大的免费视频| 亚洲成人中文字幕| 成人午夜免费福利| 久久久WWW成人免费精品| 在线观看亚洲人成网站| 全免费一级毛片在线播放| 亚洲精品偷拍视频免费观看| 亚洲精品国产福利在线观看| 国产免费资源高清小视频在线观看| 新最免费影视大全在线播放| 久久精品国产亚洲av日韩| 亚洲国产黄在线观看| 国产h肉在线视频免费观看| 老司机福利在线免费观看|