標籤:
編寫訪問資料庫的Java程式還需要幾個重要的類和介面。
DriverManager類
DriverManager類處理驅動程式的載入和建立新資料庫連接。DriverManager是java.sql包中用於管理資料庫驅動程式的類。通常,應用程式只使用類DriverManager的getConnection()靜態方法,用來建立與資料庫的串連,返回Connection對象:
static Connection getConnection(String url,String username,String password)
指定資料的URL使用者名稱和密碼建立資料庫連接對象。url的文法格式是:
jdbc:<資料庫的串連機制>:<ODBC資料庫名>。
Connection類
Connection類是java.sql包中用於處理與特定資料庫連接的類。Connection對象是用來表示資料庫連接的對象,Java程式對資料庫的操作都在這種對象上進行。Connection類的主要方法有:
- Statement createStatement():建立一個Statement對象。
- Statement createStatement(int resultSetType,int resultSetConcurrency):建立一個Statement對象,產生具有特定類型的結果集。
- void commit():提交對資料庫的改動並釋放當前持有的資料庫的鎖。
- void rollback():復原當前事務中的所有改動並釋放當前串連持有的資料庫的鎖。
- String getCatalog():獲得連線物件的目前的目錄。
- boolean isClose():判斷串連是否已關閉。
- boolean isReadOnly():判斷串連是否為唯讀模式。
- void setReadOnly():設定串連為唯讀模式。
- void close():釋放連線物件的資料庫和JDBC資源。
Statement類
Statement類是java.sql包中用於在指定的串連中處理SQL語句的類。資料庫編程的要點是在程式中嵌入SQL命令。程式需要聲明和建立串連資料庫的Connection對象,並讓該對象串連資料庫。調用類DriverManager的靜態方法getConnection()獲得Connection對象,實現程式與資料庫的連。然後,用Statement類聲明SQL語句對象,並調用Connection對象的createStatement()方法,建立SQL語句對象。例如,以下代碼建立語句對象sql:
1 Statement sql = null;2 try{3 sql = con.createStatement();4 }catch(SQLException e){}
ResultSet類
有了SQL語句對象後,調用語句對象的方法executeQuery()執行SQL查詢,並將查詢結果存放在一個用ResultSet類聲明的對象中,例如,以下代碼讀取學產生績表存於rs 對象中:
ResultSet rs = sql.executeQuery(“SELECT * FROM ksInfo”);
ResultSet對象實際上是一個由查詢結果資料的表,是一個管式資料集,由統一形式的資料行組成,一行對應一條查詢記錄。在ResultSet對象中隱含著一個遊標,一次只能獲得遊標當前所指的資料行,用next方法可取下一個資料行。用資料行的欄位(列)名稱或位置索引(自1開始)調用形如getXXX()方法獲得記錄的欄位植 。以下是ResultSet對象的部分方法:
- byte getByte(int columnIndex):返回指定欄位的位元組值。
- Date getDate(int columnIndex):返回指定欄位的日期值。
- float getFloat(int columnIndex):返回指定欄位的浮點值。
- int getInt(int columnIndex):返回指定欄位的整數值。
- String getString(int columnIndex):返回指定欄位的字串值。
- double getDouble(String columnName):返回指定欄位的雙精確度值。
- long getLong(String columnName):返回指定欄位的long型整值。
- boolean next():返回是否還有下一欄位。
以上方法中的columnIndex是位置索引,用於指定欄位,columnName是欄位名。
使用者需要在查詢結果集上瀏覽,或前後移動、或顯示結果集的指定記錄,這稱為可滾動結果集。程式要獲得一個可滾動結果集,只要在獲得SQL的語句對象時,增加指定結果集的兩個參數即可。例如,以下代碼:
Statement stmt = con.createStatement(type,concurrency); ResultSet rs = stmt.executeQuery(SQL語句)
語句對象stmt的SQL查詢就能得到相應類型的結果集。
- int 型參數type決定可滾動集的滾動方式:
- ResultSet.TYPE_FORWORD_ONLY,結果集的遊標只能向下滾動。
- ResultSet.TYPE_SCROLL_INSENSITIVE,遊標可上下移動,當資料庫變化時,當前結果集不變。
- ResultSet. TYPE_SCROLL_SENSITIVE,遊標可上下移動,當資料庫變化時,當前結果集同步改變。
- int 型參數concurrency決定資料庫是否與可滾動集同步更新:
- ResultSet.CONCUR_READ_ONLY,不能用結果集更新資料庫中的表。
- ResultSet.CONCUR_UPDATETABLE,能用結果集更新資料庫中的表。
例如,以下代碼利用連線物件connect,建立Statement對象stmt,指定結果集可滾動,並以唯讀方式讀資料庫:
stmt = connect.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,
ResultSet.CONCUR_READ_ONLY);
可滾動集上另外一些常用的方法如下:
- boolean previous():將遊標向上移動,當移到結果集的第一行時,返回false。
- void beforeFirst():將遊標移結果集的第一行之前。
- void afterLast():將遊標移到結果集的最後一行之後。
- void first():將遊標移到第一行。
- void last():將遊標移到最後一行。
- boolean isAfterLast():判遊標是否在最後一行之後。
- boolean isBeforeFirst():判遊標是否在第一行之前。
- boolean isLast():判遊標是否在最後一行。
- boolean isFirst():判遊標是否在第一行。
- int getRow():擷取當前所指的行(行號自1開始編號,結果集空,返回0)。
- boolean absolute(int row):將遊標移到row行。轉自<http://www.cnblogs.com/Coda/p/4608359.html>
java資料庫訪問類和介面