最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

JDBC核心技術(shù)詳解

 更新時間:2021年05月08日 14:44:05   作者:北街風(fēng)  
這篇文章主要介紹了JDBC核心技術(shù)詳解,文中有非常詳細的代碼示例,對正在學(xué)習(xí)JDBC的小伙伴們有很好的幫助,需要的朋友可以參考下

一、JDBC概述

1、數(shù)據(jù)的持久化

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

持久化的主要應(yīng)用是將內(nèi)存中的數(shù)據(jù)存儲在關(guān)系型數(shù)據(jù)庫中,當(dāng)然也可以存儲在磁盤文件、XML數(shù)據(jù)文件中。

在這里插入圖片描述

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

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

3、JDBC基礎(chǔ)

在這里插入圖片描述

連接數(shù)據(jù)庫:

在這里插入圖片描述
在這里插入圖片描述

4、JDBC體系結(jié)構(gòu)

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

Ø 面向應(yīng)用的API:Java API,抽象接口,供應(yīng)用程序開發(fā)人員使用(連接數(shù)據(jù)庫,執(zhí)行SQL語句,獲得結(jié)果)。

Ø 面向數(shù)據(jù)庫的API:Java Driver API,供開發(fā)商開發(fā)數(shù)據(jù)庫驅(qū)動程序用。

在這里插入圖片描述

5、JDBC API

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

在這里插入圖片描述

6、JDBC程序訪問數(shù)據(jù)庫步驟

在這里插入圖片描述
在這里插入圖片描述

二、獲取數(shù)據(jù)庫連接

1、Driver 接口

java.sql.Driver 接口是所有 JDBC 驅(qū)動程序需要實現(xiàn)的接口。這個接口是提
供給數(shù)據(jù)庫廠商使用的,不同數(shù)據(jù)庫廠商提供不同的實現(xiàn)

在程序中不需要直接去訪問實現(xiàn)了 Driver 接口的類,而是由驅(qū)動程序管理
器類(java.sql.DriverManager)去調(diào)用這些Driver實現(xiàn)
ØOracle的驅(qū)動:oracle.jdbc.driver.OracleDriver
ØmySql的驅(qū)動: com.mysql.jdbc.Driver

2、加載與注冊 JDBC 驅(qū)動

在這里插入圖片描述

3、建立連接(Connection)

在這里插入圖片描述

4、幾種常用數(shù)據(jù)庫的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實現(xiàn)類對象;使用反射
   		Class clazz= Class.forName("com.mysql.jdbc.Driver");
   		Driver driver=(Driver) clazz.newInstance();
   		//提供要連接的數(shù)據(jù)庫
   		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";
   		
    	//注冊驅(qū)動
    	DriverManager.registerDriver(driver);
    	
    	//獲取連接
    	Connection connection= (Connection) DriverManager.getConnection(url,user,password);
   		System.out.println(connection);
   	}
    
    @Test
    //方式四,可以只是加載驅(qū)動,不用是示的注冊驅(qū)動過了。
   	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();
//   		
//    	//注冊驅(qū)動
//    	DriverManager.registerDriver(driver);
//    	
    	//獲取連接
    	Connection connection= (Connection) DriverManager.getConnection(url,user,password);
   		System.out.println(connection);
   	}
    
    @Test
    //方式五,(final版):將數(shù)據(jù)庫連接需要的4個基本信息聲明在配置文件中,通過讀取配置文件的方式,獲取連接
    //實現(xiàn)了數(shù)據(jù)和代碼的分離(解耦)
   	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操作數(shù)據(jù)表的弊端 a、需要拼寫SQL語句

在這里插入圖片描述

6、Statement操作會導(dǎo)致SQL注入攻擊

在這里插入圖片描述

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

在java.sql包中有3個接口分別定義了對數(shù)據(jù)庫的調(diào)用的不同方式:

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

-在這里插入圖片描述

在這里插入圖片描述
在這里插入圖片描述

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

相關(guān)文章

  • SpringBoot集成Flink-CDC實現(xiàn)對數(shù)據(jù)庫數(shù)據(jù)的監(jiān)聽問題

    SpringBoot集成Flink-CDC實現(xiàn)對數(shù)據(jù)庫數(shù)據(jù)的監(jiān)聽問題

    Flink CDC(Flink Change Data Capture)是一種基于數(shù)據(jù)庫日志的CDC技術(shù),它實現(xiàn)了一個全增量一體化的數(shù)據(jù)集成框架,這篇文章主要介紹了SpringBoot集成Flink-CDC,實現(xiàn)對數(shù)據(jù)庫數(shù)據(jù)的監(jiān)聽,需要的朋友可以參考下
    2024-07-07
  • Java中seata框架的XA模式詳解

    Java中seata框架的XA模式詳解

    這篇文章主要介紹了Java中seata框架的XA模式詳解,Seata?是一款開源的分布式事務(wù)解決方案,致力于提供高性能和簡單易用的分布式事務(wù)服務(wù),Seata?將為用戶提供了?AT、TCC、SAGA?和?XA?事務(wù)模式,為用戶打造一站式的分布式解決方案,需要的朋友可以參考下
    2023-08-08
  • 如何用Spring發(fā)送電子郵件

    如何用Spring發(fā)送電子郵件

    這篇文章主要介紹了如何用Spring發(fā)送電子郵件,幫助大家更好的理解和使用Java,感興趣的朋友可以了解下
    2021-02-02
  • Spring源碼解析 Bean屬性填充

    Spring源碼解析 Bean屬性填充

    這篇文章主要介紹了Spring源碼解析 Bean屬性填充,文章圍繞主題展開想詳細的內(nèi)容詳情,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-07-07
  • SpringBoot讀取外部的配置文件的代碼實現(xiàn)

    SpringBoot讀取外部的配置文件的代碼實現(xiàn)

    這篇文章主要介紹了SpringBoot讀取外部的配置文件的代碼實現(xiàn),文中通過代碼示例給大家講解的非常詳細,對大家的學(xué)習(xí)或工作有一定的幫助,需要的朋友可以參考下
    2024-11-11
  • 在idea中如何使用Typora編輯markdown文件

    在idea中如何使用Typora編輯markdown文件

    這篇文章主要介紹了在idea中如何使用Typora編輯markdown文件問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-01-01
  • 詳解Java的Spring框架中的注解的用法

    詳解Java的Spring框架中的注解的用法

    這篇文章主要介紹了Java的Spring框架中的注解的用法,包括對Java bean的定義的作用介紹,需要的朋友可以參考下
    2015-11-11
  • SpringBoot項目中忽略某屬性返回數(shù)據(jù)給前端

    SpringBoot項目中忽略某屬性返回數(shù)據(jù)給前端

    在Spring Boot中,保護敏感信息和減少數(shù)據(jù)傳輸是很重要的,我們可以使用多種方法來忽略返回數(shù)據(jù)中的字段,無論是使用@JsonIgnore注解、Projection投影、@JsonIgnoreProperties注解還是自定義序列化器,都能達到我們的目的,在實際應(yīng)用中,根據(jù)具體場景和需求選擇合適的方法
    2024-05-05
  • 解決Java字符串JSON轉(zhuǎn)換異常:cn.hutool.json.JSONException:?Mismatched?hr?and?body

    解決Java字符串JSON轉(zhuǎn)換異常:cn.hutool.json.JSONException:?Mismatched?

    這篇文章主要給大家介紹了關(guān)于如何解決Java字符串JSON轉(zhuǎn)換異常:cn.hutool.json.JSONException:?Mismatched?hr?and?body的相關(guān)資料,文中將解決的辦法通過代碼介紹的非常詳細,需要的朋友可以參考下
    2024-01-01
  • springboot?ElasticSearch如何配置自定義轉(zhuǎn)換器ElasticsearchCustomConversions

    springboot?ElasticSearch如何配置自定義轉(zhuǎn)換器ElasticsearchCustomConver

    這篇文章主要介紹了springboot?ElasticSearch如何配置自定義轉(zhuǎn)換器ElasticsearchCustomConversions問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-08-08

最新評論

华亭县| 扬中市| 巴塘县| 河间市| 专栏| 陵水| 江阴市| 朝阳市| 五常市| 忻城县| 通海县| 崇阳县| 集安市| 平果县| 临澧县| 方城县| 宜黄县| 崇明县| 文登市| 昌平区| 疏勒县| 平阴县| 密云县| 子洲县| 汉中市| 陈巴尔虎旗| 石狮市| 吉隆县| 宜兰县| 东山县| 临朐县| 谷城县| 台东市| 广饶县| 朝阳市| 洪洞县| 榆树市| 吐鲁番市| 闵行区| 元朗区| 城步|