jdbc介紹

一、JDBC概念

Java 數據庫連接體系結構是用於Java應用程序連接數據庫的標準方法。JDBC對 Java 程序員而言是 API,對實現與數據庫連接的服務提供商而言是接口模型。
作爲 API,JDBC爲程序開發提供標準的接口,併爲數據庫廠商及第三方中間件廠商實現與數據庫的連接提供了標準方法。

1、加載驅動

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver") ;

這將顯式地加載驅動程序類。

2、打開連接
 與數據庫建立連接的標準方法是調用 DriverManager.getConnection(URL)方法。該方法接受含有某個URL 的字符串。

DriverManager類(即所謂的JDBC管理層)將嘗試找到可與那個URL所代表的數據庫進行連接的驅動程序。

DriverManager類存有已註冊的驅動類的清單。當調用方法 getConnection時,它將檢查清單中的每個驅動程序,直到找到可與URL中指定的數據庫進行連接的驅動程序爲止。

樣例代碼:

String url="jdbc:sqlserver://localhost:1433;DatabaseName=mydb";

String username="sa";

String password="sa";

Connection conn=DriverManager.getConnection(url,username,password);

jdbc:JDBC協議
 sqlserver:連接sqlserver數據庫
 localhost:數據庫服務器所在IP
 1433:數據庫使用的端口
 DatabaseName:連接的數據庫實例

Connection接口

Connection 對象代表與數據庫的連接,也就在已經加載的驅動和數據庫之間建立連接。

通過DriverManager.getConnection方法我們可以獲得一個連接。如上。

3、連接一旦建立就可以使用這個連接來向數據庫發送SQL語句了。
  Statement接口

我們一般用下面兩個類向數據庫發送SQL語句。
 Statement / PreparedStatement
Statement:由方法 createStatement所創建。Statement對象用於發送簡單的SQL語句。

Statement對象提供兩個方法
executeUpdate();
executeQuery();

//創建語句對象

Statement stmt=conn.createStatement();

//增、刪、改的sql語句

String sql="insert,delete,update";

//執行SQL語句,返回值即影響的行數

int number=stmt.executeUpdate(sql);

//執行查詢語句

String sql="select";

ResultSet rs=stmt.executeQuery(sql);

 

PreparedStatement:由方法prepareStatement所創建。PreparedStatement 對象有可能比Statement對象的效率更高,因爲它已被預編譯過並存放在那以供將來使用。和Statement不同的是,可以再傳遞SQL語句的同時,傳遞參數。

//創建語句對象

String sql="insert into tablename values(?)";

PreparedStatement stmt=conn.preparedStatement(sql);

stmt.setString(1,"小明");

int number=stmt.executeUpdate();

如果我們執行增,刪,改語句,那麼我們講得到一個整形的返回值,這個整形的返回值表示本條SQL語句執行後,數據庫裏幾行數據受影響。

如果我們執行查詢語句,那麼我們將得到一個結果集對象,即ResultSet對象。該對象包含本條查詢語句所包含的值。

 

ResultSet接口

ResultSet接口爲我們提供了定位行的指針和處理結果集的方法。

1、行和光標

ResultSet 維護指向其當前數據行的光標。每調用一次 next方法,光標向下移動一行。

最初它位於第一行之前,因此第一次調用 next將把光標置於第一行上,使它成爲當前行。隨着每次調用 next 導致光標向下移動一行,按照從上至下的次序獲取ResultSet 行。 在ResultSet 對象或其父輩 Statement 對象關閉之前,光標一直保持有效。

光標和行操作例子:

ResultSet rs=stmt.executeQuery(sql);

rs.next();

next方法將光標向下移動一行。

2、列

方法 getXXX 提供了獲取當前行中某列值的途徑。當定位了行之後,我們可以使用getXXX方法來獲取當前行的某列值。參數可以使我們需要的列的列明,或者結果集中該列的序號。
rs.getString("name");

rs.getString(1);

ResultSet接口爲我們提供了很多獲取列值的方法。我們在使用的時候可以查看API

上述方法創建的結果集,遊標只能依次向下移動,如果我們想靈活操作遊標,那麼我們需要創建可滾動的結果集。

Statement stmt=conn.createStatement(resultSetType,resultSetConcurrency);

創建結果集的時候我們可以加兩個參數,說明如下
第一個:設置結果集是否可滾動。 TYPE_FORWARD_ONLY  不可滾動 TYPE_SCROLL_INSENSITIVE 可滾動,不敏感(推薦) TYPE_SCROLL_SENSITIVE 可滾動,敏感。
第二個:結果集是否可更新。 CONCUR_READ_ONLY  只讀(推薦) CONCUR_UPDATABLE   是否可更新
如果我們選擇了可滾動的結果集,那麼ResultSet中的下列方法,也可以供我們使用。
public boolean isFirst() 
判斷遊標是否指向結果集的第一行.
public boolean isLast() 
判斷遊標是否指向結果集的最後一行.

public  int  getRow() 

得到當前遊標所指行的行號,行號從1 開始,如果結果集沒有行,返回0

public boolean previous() 
   將遊標向上移動,該方法返回boolean型數據,當移到結果集第一行之前時返回false.
 public void beforeFirst()
   將遊標移動到結果集的初始位置,即在第一行之前.
 public void afterLast() 
   將遊標移到結果集最後一行之後.
public void first() 
   將遊標移到結果集的第一行.
 public void last() 
   將遊標移到結果集的最後一行.
 public boolean isAfterLast() 
   判斷遊標是否在最後一行之後.
 public boolean isBeforeFirst() 
   判斷遊標是否在第一行之前
public boolean absolute(int row) 
 將遊標移到參數row指定的行號.

 注意,如果row 取負值,就是倒數的行
 absolute(-1)表示移到最後一行
 absolute(-2)表示移到倒數第2行
 當移動到第一行前面或最後一行的後面時,該方法返回false.


 


 

發佈了27 篇原創文章 · 獲贊 2 · 訪問量 14萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章