国产成人精品18p,天天干成人网,无码专区狠狠躁天天躁,美女脱精光隐私扒开免费观看

JDBC核心技術(shù)詳解

發(fā)布時(shí)間:2021-07-17 21:51 來(lái)源:腳本之家 閱讀:0 作者:北街風(fēng) 欄目: 編程語(yǔ)言 歡迎投稿:712375056

一、JDBC概述

1、數據的持久化

持久化(persistence):把數據保存到可掉電式存儲設備中以供之后使用。大多數情況下,特別是企業(yè)級應用,數據持久化意味著(zhù)將內存中的數據保存到硬盤(pán)上加以"固化”,而持久化的實(shí)現過(guò)程大多通過(guò)各種關(guān)系數據庫來(lái)完成。

持久化的主要應用是將內存中的數據存儲在關(guān)系型數據庫中,當然也可以存儲在磁盤(pán)文件、XML數據文件中。

2、Java 中的數據存儲技術(shù) 在Java中,數據庫存取技術(shù)可分為如下幾類(lèi):

ØJDBC直接訪(fǎng)問(wèn)數據庫
ØJDO技術(shù)
Ø第三方O/R工具,如Hibernate, mybatis 等JDBC是java訪(fǎng)問(wèn)數據庫的基石,JDO, Hibernate等只是更好
的封裝了JDBC

3、JDBC基礎

連接數據庫:


4、JDBC體系結構

JDBC接口(API)包括兩個(gè)層次:

Ø 面向應用的API:Java API,抽象接口,供應用程序開(kāi)發(fā)人員使用(連接數據庫,執行SQL語(yǔ)句,獲得結果)。

Ø 面向數據庫的API:Java Driver API,供開(kāi)發(fā)商開(kāi)發(fā)數據庫驅動(dòng)程序用。

5、JDBC API

JDBC API 是一系列的接口,它使得應用程序能夠進(jìn)行數據庫聯(lián)接,執行SQL語(yǔ)句,并且得到返回結果。

6、JDBC程序訪(fǎng)問(wèn)數據庫步驟


二、獲取數據庫連接

1、Driver 接口

java.sql.Driver 接口是所有 JDBC 驅動(dòng)程序需要實(shí)現的接口。這個(gè)接口是提
供給數據庫廠(chǎng)商使用的,不同數據庫廠(chǎng)商提供不同的實(shí)現

在程序中不需要直接去訪(fǎng)問(wèn)實(shí)現了 Driver 接口的類(lèi),而是由驅動(dòng)程序管理
器類(lèi)(java.sql.DriverManager)去調用這些Driver實(shí)現
ØOracle的驅動(dòng):oracle.jdbc.driver.OracleDriver
ØmySql的驅動(dòng): com.mysql.jdbc.Driver

2、加載與注冊 JDBC 驅動(dòng)

3、建立連接(Connection)

4、幾種常用數據庫的JDBC URL

連接mysql代碼實(shí)例:

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實(shí)現類(lèi)對象;使用反射
   		Class clazz= Class.forName("com.mysql.jdbc.Driver");
   		Driver driver=(Driver) clazz.newInstance();
   		//提供要連接的數據庫
   		String url = "jdbc:mysql://localhost:3306/test";
   		//提供連接需要的用戶(hù)名和密碼
   		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();
   		
   		//提供另外三個(gè)連接的基本信息;
   		String url ="jdbc:mysql://localhost:3306/test";
   		String user ="root";
   		String password ="root";
   		
    	//注冊驅動(dòng)
    	DriverManager.registerDriver(driver);
    	
    	//獲取連接
    	Connection connection= (Connection) DriverManager.getConnection(url,user,password);
   		System.out.println(connection);
   	}
    
    @Test
    //方式四,可以只是加載驅動(dòng),不用是示的注冊驅動(dòng)過(guò)了。
   	public void testConnection04() throws Exception {
   
   		//提供另外三個(gè)連接的基本信息;
   		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();
//   		
//    	//注冊驅動(dòng)
//    	DriverManager.registerDriver(driver);
//    	
    	//獲取連接
    	Connection connection= (Connection) DriverManager.getConnection(url,user,password);
   		System.out.println(connection);
   	}
    
    @Test
    //方式五,(final版):將數據庫連接需要的4個(gè)基本信息聲明在配置文件中,通過(guò)讀取配置文件的方式,獲取連接
    //實(shí)現了數據和代碼的分離(解耦)
   	public void testConnection05() throws Exception {
   
   	//讀取配置文件的4個(gè)基本信息
    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、需要拼寫(xiě)SQL語(yǔ)句

6、Statement操作會(huì )導致SQL注入攻擊

數據庫連接被用于向數據庫服務(wù)器發(fā)送命令和SQL語(yǔ)句,并接受數據庫服務(wù)器返回的結果。其實(shí)一個(gè)數據庫連接就是一個(gè)Socket連接。

在java.sql包中有3個(gè)接口分別定義了對數據庫的調用的不同方式:

Statement :用于執行靜態(tài)SQL語(yǔ)句并返回它所生成結果的對象。PrepatedIatement : SQL語(yǔ)句被預編譯并存儲在此對象中,可以使用此對象多次高效地執行該語(yǔ)句。CallableStatement :用于執行SQL存儲過(guò)程

-


到此這篇關(guān)于JDBC核心技術(shù)詳解的文章就介紹到這了,更多相關(guān)JDBC核心技術(shù)內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。

国产精品国产三级国AV| 国产精品久久久久久超碰| 国产真人作爱免费视频道歉| 中文字幕日韩精品欧美一区| 国产精品午夜无码AV天美传媒| 欧美精品V欧洲精品|