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()方法來檢索
第七步:清理環境:關閉使用的資料庫資源。
我們用代碼簡單的來實現資料庫的連接 代碼如下:
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()來獲取結果就是結果集中的第二個記錄了。
推薦閱讀: