JDBC的初步瞭解及使用

Xie發表於2019-05-18

一、概念

1、什麼是JDBC?

  JDBC(Java Data Base Connectivity,java資料庫連線)是一種用於執行SQL語句的Java API,可以為多種關聯式資料庫提供統一訪問,它由一組用Java語言編寫的類和介面組成。JDBC提供了一種基準,據

此可以構建更高階的工具和介面,使資料庫開發者能夠編寫資料庫的程式。簡單地說,JDBC 可做三件事:與資料庫建立連線、傳送 運算元據庫的語句並處理結果。

2、JDBC有什麼用呢?

  我們用JAVA就能連線到資料庫;建立SQL或者MYSQL語句;執行SQL或MYSQL的查詢資料庫;檢視和修改結果記錄。

 

二、連線常用的介面

  提供的介面包括:JAVA API:提供對JDBC的管理連結;JAVA Driver API:支援JDBC管理到驅動器連線。

 1、DriverManager :這個類管理資料庫驅動程式的列表。內容是否符合從Java應用程式使用的通訊子協議正確的資料

 庫驅動程式的連線請求。識別JDBC在一定子協議的第一個驅動器被用來建立資料庫連線。

2、Driver :此介面處理與資料庫伺服器通訊。很少直接與驅動程式物件。相反,使用DriverManager中的物件,它管理

此型別的物件。它也抽象的與驅動程式物件工作相關的詳細資訊。

3、Connection :此介面與接觸資料庫的所有方法。連線物件表示通訊上下文,即,與資料庫中的所有的通訊是通過唯一的連線物件。

 4、Statement :可以使用這個介面建立的物件的SQL語句提交到資料庫。一些派生的介面接受除執行儲存過程的引數。

 5、ResultSet  :這些物件儲存從資料庫後,執行使用Statement物件的SQL查詢中檢索資料。它作為一個迭代器,讓你可以通過移動它的資料。

 

建立JDBC的七大步驟:

第一步:匯入工具包:

import java.sql.*;

import javax.sql.*;

第二步:註冊jdbc驅動程式

第三步:Class.forName( ....);

第四步:使用DriverManager.getConnection();方法來建立一個Connection物件,它代表一個物理連線的資料庫。

第五步:執行查詢:使用一個物件型別Statement或PreparedStatement()構建,並提交一個SQL語句到資料庫。

第六步:從結果集中提取資料;這一步是必需的情況下,從資料庫中獲取資料。可以使用適當的ResultSet.getXXX()方法來檢索

第七步:清理環境:關閉使用的資料庫資源。

 

我們用程式碼簡單的來實現資料庫的連線 程式碼如下:

 1 package pkg1;
 2 import java.sql.*;
 3 import javax.sql.*;
 4 
 5 public class Test{
 6     
 7     //Driver類全名
 8     private static final String DRIVER = "com.microsoft.sqlserver.jdbc.SQLServerDriver";
 9     //jdbc協議:子協議://ip:埠號/
10     private static final String URL = "jdbc:sqlserver://localhost:1433;databasename=";
11     //資料庫名
12     private static final String DATABASE_NAME = "oa";
13     //資料庫使用者名稱
14     private static final String USER_NAME = "sa";
15     //資料庫密碼
16     private static final String PASSWORD = "123456";
17         
18     public static void main(String args[]){
19         try{
20             //載入驅動程式:它通過反射建立一個driver物件。
21             Class.forName( DRIVER );
22             //1.開啟Miccorsoft SQL Server  Managerment Studio 並且連線
23             Connection conn = DriverManager.getConnection( URL+DATABASE_NAME,USER_NAME,PASSWORD);
24             //2.新建一個查詢
25             Statement stmt = conn.createStatement();
26             //3.執行查詢--->返回結果集
27             ResultSet rs = stmt.executeQuery("select * from tt2");
28             
29                 int k = 0;
30                 String g,d;
31                 int count = 0;
32                 while ( rs.next() ){
33                     k = rs.getInt("id");
34                     g = rs.getString("name");
35                     d = rs.getString("sex");
36                     System.out.println("編號:"+k+" "+"姓名:"+g+" "+"性別:"+d);
37                     count++;    
38                     
39                 }if(k==0){
40                     System.out.println("查詢正常,但沒有記錄");
41                 }                
42 
43             //關閉Microsoft SQL Server  Managerment Studio連線
44             rs.close();
45             stmt.close();
46             conn.close();
47             
48             
49             System.out.println("連線的資料庫是"+conn);
50         }
51         catch(ClassNotFoundException e){
52             System.out.println("找不到驅動"+e.getMessage());
53         }
54         catch(Exception e){
55             System.out.println("驅動已經載入成功,發生其他異常"+e.getMessage());
56         }
57     }
58 }

 

結果:

我們現在在oa資料庫裡面建了一張tt2的資料庫表,插上了資料

在對程式碼進行編譯

可以看到已經把資料庫裡的內容讀取出來了。

三、補充內容

1、JDBC結果集中為什麼.next();?

將游標從當前位置向下移動一行。結果集游標最初位於第一行之前;對方法的第一次呼叫接著使第一行成為當前行;第二次呼叫使第二行成為當前行,依此類推。

如果當前行的輸入流是開啟的,那麼對方法next的呼叫將隱式關閉它。讀取新行時,ResultSet物件的警告連結清除。

至於返回值,如果新的當前行有效,則為true;如果沒有更多行,則為false.

但是要特別注意,next()方法用一次,遊標就往後移了一位,此時再使用next()來獲取結果就是結果集中的第二個記錄了。

 

相關文章