JDBC基礎知識1java
1.幾個基礎概念
(1).數據的持久化
把數據保存到可掉電式存儲設備中以供以後使用。大多數狀況下,特別是企業級應用,數據持久化意味着將內存中的數據保存
到硬盤上加以」固化」,而持久化的實現過程大多經過各類關係數據庫來完成。也便是說咱們經過關係型數據庫來實現把須要存
儲的內容保存到計算機上,咱們須要使用的時候呢,再經過數據庫把它調用出來。mysql
(2).java中可以使用數據持久化的幾個技術
A:JDBC技術訪問數據庫
B:JDO技術
C:第三方O/R技術:如Hibernate,ibites
注意:JDO技術和第三方O/R技術底層使用的也是JDBC技術。因此JDBC是比較重要的知識點程序員
2.JDBC概述
(1).JDBC(Java Database Connectivity)是一個獨立於特定數據庫管理系統、通用的SQL數據庫存取和操做的公共接口(一組API)
,定義了用來訪問數據庫的標準Java類庫,使用這個類庫能夠以一種標準的方法、方便地訪問數據庫資源
(2).JDBC爲訪問不一樣的數據庫提供了一種統一的途徑,爲開發者屏蔽了一些細節問題。
(3).JDBC的目標是使Java程序員使用JDBC能夠鏈接任何提供了JDBC驅動程序的數據庫系統,這樣就使得程序員無需對特定的數據
庫系統的特色有過多的瞭解,從而大大簡化和加快了開發過程sql
3.java程序是如何經過JDBC來和數據庫進行交互的(圖解)數據庫
4.JDBC驅動
(1).JDBC驅動程序:各個數據庫廠商根據JDBC的規範製做的 JDBC 實現類的類庫,其實就是一種多態。
(2).JDBC驅動程序總共有四種類型:
第一類:JDBC-ODBC橋。
第二類:部分本地API部分Java的驅動程序。
第三類:JDBC網絡純Java驅動程序。
第四類:本地協議的純 Java 驅動程序。
第3、四兩類都是純Java的驅動程序,所以,對於Java開發者來講,它們在性能、可移植性、功能等方面都有優點網絡
5.JDBC相關的操做層級結構(圖解)oracle
6.Dirver接口sqlserver
(1).概述
Java.sql.Driver 接口是全部 JDBC 驅動程序須要實現的接口。這個接口是提供給數據庫廠商使用的,不一樣數據庫廠商提供
不一樣的實現。
(2).在程序中不須要直接去訪問實現了 Driver 接口的類,而是由驅動程序管理器類(java.sql.DriverManager)去調用這些
Driver實現性能
(3).使用Driver實現數據庫鏈接步驟:
A: 建立一個 Driver 實現類的對象
B: 準備鏈接數據庫的基本信息: url, user, password
C: 調用 Driver 接口的 connect(url, info) 獲取數據庫鏈接
注意:
-1.什麼是JDBC URL?
JDBC URL 用於標識一個被註冊的驅動程序,驅動程序管理器經過這個 URL 選擇正確的驅動程序,從而創建到數據庫的
鏈接。
-2.JDBC URL的構成
JDBC URL的標準由三部分組成,各部分間用冒號分隔。
jdbc:<子協議>:<子名稱>
協議:JDBC URL中的協議老是jdbc
子協議:子協議用於標識一個數據庫驅動程序
子名稱:一種標識數據庫的方法。子名稱能夠依不一樣的子協議而變化,用子名稱的目的是爲了定位數據庫提供足夠的信息
-3.幾種常見的JDBC URL
對於 Oracle 數據庫鏈接,採用以下形式:
jdbc:oracle:thin:@localhost:1521:sid
對於 SQLServer 數據庫鏈接,採用以下形式:
jdbc:microsoft:sqlserver//localhost:1433; DatabaseName=sid
對於 MYSQL 數據庫鏈接,採用以下形式:
jdbc:mysql://localhost:3306/sidurl
(4).代碼實現(指定數據庫鏈接)
public void testDriver() throws SQLException {
//1. 建立一個 Driver 實現類的對象
Driver driver = new com.mysql.jdbc.Driver();
//2. 準備鏈接數據庫的基本信息: url, user, password
String url = "jdbc:mysql://localhost:3306/test";
Properties info = new Properties();
info.put("user", "root");
info.put("password", "1230");
//3. 調用 Driver 接口的 connect(url, info) 獲取數據庫鏈接
Connection connection = driver.connect(url, info);
System.out.println(connection);
}
//注意:以上的方法僅僅是mysql數據庫能夠鏈接,可是呢,咱們知道JDBC是能夠經過不一樣的數據庫產商給出的鏈接以及相關的
驅動能夠實現不一樣的數據庫鏈接,那麼上述代碼就須要修改,沒有實現動態的操做。咱們的目的是爲了實如今不修改原來的基礎
代碼下面實現不一樣的數據庫鏈接。
(5).使用Driver實現數據庫鏈接(通用) public Connection getConnection() throws Exception{ String driverClass = null; String jdbcUrl = null; String user = null; String password = null; //讀取類路徑下的 jdbc.properties 文件 InputStream in = getClass().getClassLoader().getResourceAsStream("jdbc.properties"); Properties properties = new Properties(); properties.load(in); driverClass = properties.getProperty("driver"); jdbcUrl = properties.getProperty("jdbcUrl"); user = properties.getProperty("user"); password = properties.getProperty("password"); //經過反射常見 Driver 對象. Driver driver = (Driver) Class.forName(driverClass).newInstance(); Properties info = new Properties(); info.put("user", user); info.put("password", password); //經過 Driver 的 connect 方法獲取數據庫鏈接. Connection connection = driver.connect(jdbcUrl, info); return connection; }