日韩欧美另类久久久精品_亚洲大色堂人在线无码_国产三级aⅴ在线播放_在线无码aⅴ精品动漫_国产精品精品国产专区

基礎(chǔ)的MYSQL面試問題

  JDBC操作數(shù)據(jù)庫的基本流程是什么

  所有的JDBC應用程序都具有下面的基本流程:

  1、建立到數(shù)據(jù)庫的連接。

  2、執(zhí)行SQL語句。

  3、處理結(jié)果。

  4、從數(shù)據(jù)庫斷開連接。

  下面我們就來仔細看一看每一個步驟。

  建立到數(shù)據(jù)庫的連接

  通過JDBC使用數(shù)據(jù)庫的第一步就是建立一個連接。JDBC連接是由URL指定的,它的格式如下:

  jdbc::

  其中subprotocol是被請求的數(shù)據(jù)庫連接的類型(如ODBC,ORACLE,Informix等等),而subname提供了所要建立的連接的一些附加信息。當JDBC驅(qū)動程序管理器收到一個連接的URL時,所有已知的JDBC驅(qū)動程序會被詢問是否可以為這個URL服務(wù)。請求一個通過JDBC-ODBC橋到叫做MyData的ODBC數(shù)據(jù)源的連接的例子如下:

  Connection con = DriverManage.getconnection(“jdbc:odbc:MyData”);

  看上去一切都很順利,但是JDBC驅(qū)動程序管理器是怎么知道哪些JDBC驅(qū)動程序在當前的系統(tǒng)中可用呢?有兩種機制可以通知驅(qū)動程序管理器一個JDBC驅(qū)動程序可以使用:sql.drivers屬性和JDBC驅(qū)動程序注冊。

  驅(qū)動程序管理器引用sql.drivers系統(tǒng)屬性來取得當前系統(tǒng)中可用的JDBC驅(qū)動程序列表。這個系統(tǒng)屬性包含一些用冒號隔開的JDBC驅(qū)動程序的類名,通過這個類名,驅(qū)動程序管理器可以試圖滿足一個連接請求。

  使用驅(qū)動程序注冊更為常見。這種方法使你對你要使用的JDBC驅(qū)動程序有更多的控制。所有的JDBC驅(qū)動程序在實例化的時候都必須在驅(qū)動程序管理器中注冊自己,注冊可以通過下列兩個方法來實現(xiàn):

  1.Class.forName(“foo.Driver”).newInstance();

  2.new foo.Driver();

  我個人比較喜歡使用Class.forName()這種方法,不過這兩種方法的效果是相同的。JDBC驅(qū)動程序用驅(qū)動程序管理器注冊自己,這樣,它就可以為連接請求服務(wù)了。

  執(zhí)行SQL語句

  在數(shù)據(jù)庫連接成功建立之后,我們就可以執(zhí)行那些完成實際工作的SQL語句了。在執(zhí)行SQL語句之前,我們必須首先創(chuàng)建一個語句對象,這個對象提供了到特定數(shù)據(jù)庫SQL引擎的接口。有下列三種不同類型的語句對象:

  1.Statement——基本的語句對象,它提供了直接在數(shù)據(jù)庫中執(zhí)行SQL語句的方法。對于那些只執(zhí)行一次的查詢以及DDL語句如CREATE TABLE,DROP TABLE等等來說,statement對象就足夠了。

  2.Prepared statement——這種語句對象用于那些需要執(zhí)行多次,每次僅僅是數(shù)據(jù)取值不同的SQL語句,它還提供了一些方法,以便指出語句所使用的輸入?yún)?shù)。

  3.Callable statement——這種語句對象被用來訪問數(shù)據(jù)庫中的存儲過程。它提供了一些方法來指定語句所使用的輸入輸出參數(shù)。

  下面是一個用語句類來執(zhí)行SQL SELECT語句的一個例子:

  Statement stmt = con.createStatement();

  ResultSet rs = stmt.executeQuery(“SELECT * FROM MyTable”);

  處理結(jié)果

  在執(zhí)行了一個SQL語句之后,我們必須處理得到的結(jié)果。有些語句僅僅返回一個整形數(shù),指出受到影響的行數(shù)(比如UPDATE和DELETE語句)。SQL查詢(SELECT語句)返回一個含有查詢結(jié)果的結(jié)果集。結(jié)果集由行和列組成,各列數(shù)據(jù)可以通過相應數(shù)據(jù)庫類型的一系列g(shù)et方法(如getString,getInt,getDate等等)來取得。在取得了一行數(shù)據(jù)的所有數(shù)據(jù)之后,我們可以調(diào)用next()方法來移到結(jié)果集中的下一條記錄。JDBC規(guī)范的1.1版只允許forward-onle(只向前)型的游標,而在JDBC2.0中有更健壯的游標控制功能,我們可以向后移動游標而且可以將游標移動到指定行。

  從數(shù)據(jù)庫斷開連接

  在結(jié)果集、語句和連接對象用完以后,我們必須正確地關(guān)閉它們。連接對象、結(jié)果集對象以及所有的語句對象都有close()方法,通過調(diào)用這個方法,我們可以確保正確釋放與特定數(shù)據(jù)庫系統(tǒng)相關(guān)的所有資源。

  有些開發(fā)者喜歡將引用亂放,然后用一個垃圾收集程序?qū)iT負責正確清除對象。我強烈建議大家在使用了JDBC驅(qū)動程序之后調(diào)用close()方法。這樣可以盡可能的減少由于掛起的對象殘留在數(shù)據(jù)庫系統(tǒng)中而造成的內(nèi)存泄漏。

本文已影響6827
上一篇:關(guān)于MySql加速和優(yōu)化的面試題目 下一篇:軟件測試QTP面試題目

相關(guān)文章推薦

|||||