JDBC核心技術詳解
一、JDBC概述
1、數據的持久化
持久化(persistence):把數據保存到可掉電式存儲設備中以供之後使用。大多數情況下,特別是企業級應用,數據持久化意味著將內存中的數據保存到硬盤上加以”固化”,而持久化的實現過程大多通過各種關系數據庫來完成。
持久化的主要應用是將內存中的數據存儲在關系型數據庫中,當然也可以存儲在磁盤文件、XML數據文件中。
2、Java 中的數據存儲技術 在Java中,數據庫存取技術可分為如下幾類:
ØJDBC直接訪問數據庫
ØJDO技術
Ø第三方O/R工具,如Hibernate, mybatis 等JDBC是java訪問數據庫的基石,JDO, Hibernate等隻是更好
的封裝瞭JDBC
3、JDBC基礎
連接數據庫:
4、JDBC體系結構
JDBC接口(API)包括兩個層次:
Ø 面向應用的API:Java API,抽象接口,供應用程序開發人員使用(連接數據庫,執行SQL語句,獲得結果)。
Ø 面向數據庫的API:Java Driver API,供開發商開發數據庫驅動程序用。
5、JDBC API
JDBC API 是一系列的接口,它使得應用程序能夠進行數據庫聯接,執行SQL語句,並且得到返回結果。
6、JDBC程序訪問數據庫步驟
二、獲取數據庫連接
1、Driver 接口
java.sql.Driver 接口是所有 JDBC 驅動程序需要實現的接口。這個接口是提
供給數據庫廠商使用的,不同數據庫廠商提供不同的實現
在程序中不需要直接去訪問實現瞭 Driver 接口的類,而是由驅動程序管理
器類(java.sql.DriverManager)去調用這些Driver實現
ØOracle的驅動:oracle.jdbc.driver.OracleDriver
ØmySql的驅動: com.mysql.jdbc.Driver
2、加載與註冊 JDBC 驅動
3、建立連接(Connection)
4、幾種常用數據庫的JDBC URL
連接mysql代碼實例:
import java.io.InputStream; import java.sql.DriverManager; import java.sql.SQLException; import java.util.Properties; import org.junit.Test; import com.mysql.jdbc.Connection; import com.mysql.jdbc.Driver; public class testconnction01 { /** * @throws SQLException */ @Test //方式一 public void testConnection011() throws SQLException { Driver driver = new com.mysql.jdbc.Driver(); String url = "jdbc:mysql://localhost:3306/test"; Properties info = new Properties(); info.setProperty("user", "root"); info.setProperty("password", "root"); Connection collection = (Connection) driver.connect(url, info); System.out.println(collection); } @Test //方式二,對方式一的迭代,使得程序具有更好的可移植性 public void testConnection02() throws Exception { //獲取Driver實現類對象;使用反射 Class clazz= Class.forName("com.mysql.jdbc.Driver"); Driver driver=(Driver) clazz.newInstance(); //提供要連接的數據庫 String url = "jdbc:mysql://localhost:3306/test"; //提供連接需要的用戶名和密碼 Properties info = new Properties(); info.setProperty("user", "root"); info.setProperty("password", "root"); //獲取連接 Connection collection = (Connection) driver.connect(url, info); System.out.println(collection); } @Test //方式三,使用DriverManager替換Driver public void testConnection03() throws Exception { Class clazz= Class.forName("com.mysql.jdbc.Driver"); Driver driver=(Driver) clazz.newInstance(); //提供另外三個連接的基本信息; String url ="jdbc:mysql://localhost:3306/test"; String user ="root"; String password ="root"; //註冊驅動 DriverManager.registerDriver(driver); //獲取連接 Connection connection= (Connection) DriverManager.getConnection(url,user,password); System.out.println(connection); } @Test //方式四,可以隻是加載驅動,不用是示的註冊驅動過瞭。 public void testConnection04() throws Exception { //提供另外三個連接的基本信息; String url ="jdbc:mysql://localhost:3306/test"; String user ="root"; String password ="root"; Class.forName("com.mysql.jdbc.Driver"); // Class clazz= Class.forName("com.mysql.jdbc.Driver"); // Driver driver=(Driver) clazz.newInstance(); // // //註冊驅動 // DriverManager.registerDriver(driver); // //獲取連接 Connection connection= (Connection) DriverManager.getConnection(url,user,password); System.out.println(connection); } @Test //方式五,(final版):將數據庫連接需要的4個基本信息聲明在配置文件中,通過讀取配置文件的方式,獲取連接 //實現瞭數據和代碼的分離(解耦) public void testConnection05() throws Exception { //讀取配置文件的4個基本信息 InputStream is = testconnction01.class.getClassLoader().getResourceAsStream("jdbc.properties"); Properties p =new Properties(); p.load(is); String user = p.getProperty("user"); String password = p.getProperty("password"); String url = p.getProperty("url"); String driverClass =p.getProperty("driverClass"); Class.forName(driverClass); //獲取連接 Connection connection= (Connection) DriverManager.getConnection(url,user,password); System.out.println(connection); } }
5、使用Statement操作數據表的弊端 a、需要拼寫SQL語句
6、Statement操作會導致SQL註入攻擊
數據庫連接被用於向數據庫服務器發送命令和SQL語句,並接受數據庫服務器返回的結果。其實一個數據庫連接就是一個Socket連接。
在java.sql包中有3個接口分別定義瞭對數據庫的調用的不同方式:
Statement :用於執行靜態SQL語句並返回它所生成結果的對象。PrepatedIatement : SQL語句被預編譯並存儲在此對象中,可以使用此對象多次高效地執行該語句。CallableStatement :用於執行SQL存儲過程
–
到此這篇關於JDBC核心技術詳解的文章就介紹到這瞭,更多相關JDBC核心技術內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!
推薦閱讀:
- JDBC獲取數據庫連接由淺入深
- Java DriverManager.getConnection()獲取數據庫連接
- JDBC以反射機制加載類註冊驅動連接MySQL
- MySQL實現JDBC詳細講解
- Data Source與數據庫連接池簡介(JDBC簡介)