Java?JDBC使用入門講解
前言:本節(jié)我們開始學(xué)習(xí)JDBC,JDBC的基礎(chǔ)對(duì)于我們開發(fā)來說非常的重要,大家一定要重視起來!
*.學(xué)習(xí)目標(biāo)
- 掌握J(rèn)DBC的的CRUD
- 理解JDBC中各個(gè)對(duì)象的作用
- 掌握Druid的使用
1、JDBC概述
在開發(fā)中我們使用的是java語言,那么勢(shì)必要通過java語言操作數(shù)據(jù)庫中的數(shù)據(jù)。這就是接下來要學(xué)習(xí)的JDBC。
1.1、JDBC的概念
JDBC 就是使用Java語言操作關(guān)系型數(shù)據(jù)庫的一套API
全稱:( Java DataBase Connectivity ) Java 數(shù)據(jù)庫連接
我們開發(fā)的同一套Java代碼是無法操作不同的關(guān)系型數(shù)據(jù)庫,因?yàn)槊恳粋€(gè)關(guān)系型數(shù)據(jù)庫的底層實(shí)現(xiàn)細(xì)節(jié)都不一樣。如果這樣,問題就很大了,在公司中可以在開發(fā)階段使用的是MySQL數(shù)據(jù)庫,而上線時(shí)公司最終選用oracle數(shù)據(jù)庫,我們就需要對(duì)代碼進(jìn)行大批量修改,這顯然并不是我們想看到的。我們要做到的是同一套Java代碼操作不同的關(guān)系型數(shù)據(jù)庫,而此時(shí)sun公司就指定了一套標(biāo)準(zhǔn)接口(JDBC),JDBC中定義了所有操作關(guān)系型數(shù)據(jù)庫的規(guī)則。眾所周知接口是無法直接使用的,我們需要使用接口的實(shí)現(xiàn)類,而這套實(shí)現(xiàn)類(稱之為:驅(qū)動(dòng))就由各自的數(shù)據(jù)庫廠商給出。
1.2、JDBC的本質(zhì)
- 官方(sun公司)定義的一套操作所有關(guān)系型數(shù)據(jù)庫的規(guī)則,即接口
- 各個(gè)數(shù)據(jù)庫廠商去實(shí)現(xiàn)這套接口,提供數(shù)據(jù)庫驅(qū)動(dòng)jar包
- 我們可以使用這套接口(JDBC)編程,真正執(zhí)行的代碼是驅(qū)動(dòng)jar包中的實(shí)現(xiàn)類
1.3、JDBC的好處
- 各數(shù)據(jù)庫廠商使用相同的接口,Java代碼不需要針對(duì)不同數(shù)據(jù)庫分別開發(fā)
- 可隨時(shí)替換底層數(shù)據(jù)庫,訪問數(shù)據(jù)庫的Java代碼基本不變
以后編寫操作數(shù)據(jù)庫的代碼只需要面向JDBC(接口),操作哪兒個(gè)關(guān)系型數(shù)據(jù)庫就需要導(dǎo)入該數(shù)據(jù)庫的驅(qū)動(dòng)包,如需要操作MySQL數(shù)據(jù)庫,就需要再項(xiàng)目中導(dǎo)入MySQL數(shù)據(jù)庫的驅(qū)動(dòng)包。如下圖就是MySQL驅(qū)動(dòng)包
2、JDBC快速入門
Java操作數(shù)據(jù)庫的流程
(1)編寫Java代碼
(2)Java代碼將SQL發(fā)送到MySQL服務(wù)端
(3)MySQL服務(wù)端接收到SQL語句并執(zhí)行該SQL語句
(4)將SQL語句執(zhí)行的結(jié)果返回給Java代碼
2.1、編寫代碼
創(chuàng)建工程,導(dǎo)入驅(qū)動(dòng)jar包
注冊(cè)驅(qū)動(dòng)
Class.forName("com.mysql.jdbc.Driver");
獲取連接
Java代碼需要發(fā)送SQL給MySQL服務(wù)端,就需要先建立連接
Connection conn = DriverManager.getConnection(url,username,password);
定義SQL語句
String sql = “update…” ;
獲取執(zhí)行SQL對(duì)象
執(zhí)行SQL語句需要SQL執(zhí)行對(duì)象,而這個(gè)執(zhí)行對(duì)象就是Statement對(duì)象
Statement stmt = conn.createStatement();
執(zhí)行SQL
stmt.executeUpdate(sql);
處理返回結(jié)果
釋放資源
stmt.close(); conn.close();
2.2、完整案例
新建一個(gè)空項(xiàng)目
新建模塊
導(dǎo)入驅(qū)動(dòng)包
在添加為庫文件的時(shí)候,有如下三個(gè)選項(xiàng)
- Global Library :全局有效
- Project Library :項(xiàng)目有效
- Module Library :模塊有效
創(chuàng)建JdbcDemo類并編寫如下代碼:
package com.bby; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; public class JdbcDemo { public static void main(String[] args) throws Exception { //1. 注冊(cè)驅(qū)動(dòng) Class.forName("com.mysql.jdbc.Driver"); //2.獲取連接 String url = "jdbc:mysql://localhost:3306/jdbc"; String username = "root"; String password = "1234"; Connection connection = DriverManager.getConnection(url,username,password); //3.定義sql語句 String sql = "update acount set money = 1000 where id = 1"; //4.獲取執(zhí)行sql對(duì)象Statement Statement statement = connection.createStatement(); //5.執(zhí)行sql int count = statement.executeUpdate(sql); //6.處理結(jié)果 System.out.println(count); //7.釋放資源 statement.close(); connection.close(); } }
查看控制臺(tái)結(jié)果
數(shù)據(jù)庫數(shù)據(jù)更新前
數(shù)據(jù)庫數(shù)據(jù)更新后
To be continued…
到此這篇關(guān)于Java JDBC使用入門講解的文章就介紹到這了,更多相關(guān)Java JDBC內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
java8 利用reduce實(shí)現(xiàn)將列表中的多個(gè)元素的屬性求和并返回操作
這篇文章主要介紹了java8 利用reduce實(shí)現(xiàn)將列表中的多個(gè)元素的屬性求和并返回操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-08-08Spring?populateBean屬性賦值和自動(dòng)注入
這篇文章主要為大家介紹了Spring?populateBean屬性賦值和自動(dòng)注入示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03java:無法訪問org.springframework.boot.SpringApplication問題
這篇文章主要介紹了java:無法訪問org.springframework.boot.SpringApplication問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-08-08解決使用ProcessBuilder踩到的坑及注意事項(xiàng)
這篇文章主要介紹了解決使用ProcessBuilder踩到的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-06-06Java中 this和super的用法與區(qū)別小結(jié)
在Java的學(xué)習(xí)與開發(fā)者我們經(jīng)常遇到this和super關(guān)鍵字,本文主要介紹了Java中 this和super的用法與區(qū)別小結(jié),具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12詳解高性能緩存Caffeine原理及實(shí)戰(zhàn)
Caffeine是基于Java 8開發(fā)的,提供了近乎最佳命中率的高性能本地緩存組件,Spring5開始不再支持Guava Cache,改為使用Caffeine。Caffeine提供的內(nèi)存緩存使用參考Google guava的API2021-06-06