日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

JDBC学习笔记01【JDBC快速入门、JDBC各个类详解、JDBC之CRUD练习】

發(fā)布時(shí)間:2024/9/30 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JDBC学习笔记01【JDBC快速入门、JDBC各个类详解、JDBC之CRUD练习】 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
  • 黑馬程序員-JDBC文檔(騰訊微云)JDBC筆記.pdf:https://share.weiyun.com/Kxy7LmRm
  • JDBC學(xué)習(xí)筆記01【JDBC快速入門、JDBC各個(gè)類詳解、JDBC之CRUD練習(xí)】
  • JDBC學(xué)習(xí)筆記02【ResultSet類詳解、JDBC登錄案例練習(xí)、PreparedStatement類詳解】
  • JDBC學(xué)習(xí)筆記03【JDBC事務(wù)管理、數(shù)據(jù)庫(kù)連接池、JDBCTemplate】
  • 目錄

    01 JDBC快速入門

    今日內(nèi)容

    JDBC_概念

    JDBC_快速入門

    驅(qū)動(dòng)jar包解析

    IntelliJ IDEA 2017.3.4 x64 新建項(xiàng)目、新建模塊

    Idea 新建包 不分級(jí) 解決方法

    將 MySQL驅(qū)動(dòng)jar包 添加到 Idea項(xiàng)目 中

    Idea 連接 MySQL數(shù)據(jù)庫(kù) 代碼

    02 JDBC各個(gè)類詳解

    Idea 導(dǎo)入 項(xiàng)目

    JDBC各個(gè)類詳解_DriverManager

    JDBC各個(gè)類詳解_DriverManager

    DriverManager 獲取數(shù)據(jù)庫(kù)連接

    JDBC各個(gè)類詳解_Connection

    獲取執(zhí)行sql的對(duì)象

    管理事務(wù)

    JDBC各個(gè)類詳解_Statement

    03 JDBC之CRUD練習(xí)

    JDBC練習(xí)_insert語(yǔ)句

    account表 添加一條記錄

    JDBC練習(xí)_update語(yǔ)句

    account表 修改記錄

    JDBC練習(xí)_update、DDL語(yǔ)句

    account表 刪除一條記錄

    執(zhí)行DDL語(yǔ)句


    ?

    01 JDBC快速入門

    今日內(nèi)容

  • JDBC基本概念
  • 快速入門
  • 對(duì)JDBC中各個(gè)接口和類詳解
  • JDBC_概念

    1. 概念:Java DataBase Connectivity ?Java 數(shù)據(jù)庫(kù)連接, Java語(yǔ)言操作數(shù)據(jù)庫(kù)
    ?? ?* JDBC本質(zhì):其實(shí)是官方(sun公司)定義的一套操作所有關(guān)系型數(shù)據(jù)庫(kù)的規(guī)則,即接口。各個(gè)數(shù)據(jù)庫(kù)廠商去實(shí)現(xiàn)這套接口,提供數(shù)據(jù)庫(kù)驅(qū)動(dòng)jar包。我們可以使用這套接口(JDBC)編程,真正執(zhí)行的代碼是驅(qū)動(dòng)jar包中的實(shí)現(xiàn)類。

    • Person 接口:eat()方法? ?Worker實(shí)現(xiàn)類? ? ??Person p = new Worker();?// 父類引用指向子類對(duì)象
    • p.eat(); // 會(huì)調(diào)用Worker()實(shí)現(xiàn)類的eat方法,產(chǎn)生多態(tài)調(diào)用
    • JDBC編程,以接口類型調(diào)用方法。導(dǎo)入驅(qū)動(dòng)jar包后,真正執(zhí)行的是驅(qū)動(dòng)jar包實(shí)現(xiàn)類對(duì)應(yīng)的實(shí)現(xiàn)方法

    JDBC_快速入門

    2. 快速入門:
    ?? ?* 步驟:
    ?? ??? ?1. 導(dǎo)入驅(qū)動(dòng)jar包 mysql-connector-java-5.1.37-bin.jar
    ?? ??? ??? ?1.復(fù)制mysql-connector-java-5.1.37-bin.jar到項(xiàng)目的libs目錄下
    ?? ??? ??? ?2.右鍵-->Add As Library
    ?? ??? ?2. 注冊(cè)驅(qū)動(dòng)
    ?? ??? ?3. 獲取數(shù)據(jù)庫(kù)連接對(duì)象 Connection
    ?? ??? ?4. 定義sql
    ?? ??? ?5. 獲取執(zhí)行sql語(yǔ)句的對(duì)象 Statement
    ?? ??? ?6. 執(zhí)行sql,接受返回結(jié)果
    ?? ??? ?7. 處理結(jié)果
    ?? ??? ?8. 釋放資源

    ?? ?* 代碼實(shí)現(xiàn):
    ?? ? ??? //1. 導(dǎo)入驅(qū)動(dòng)jar包
    ? ? ? ? //2.注冊(cè)驅(qū)動(dòng)
    ? ? ? ? Class.forName("com.mysql.jdbc.Driver");
    ? ? ? ? //3.獲取數(shù)據(jù)庫(kù)連接對(duì)象
    ? ? ? ? Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db3", "root", "root");
    ? ? ? ? //4.定義sql語(yǔ)句
    ? ? ? ? String sql = "update account set balance = 500 where id = 1";
    ? ? ? ? //5.獲取執(zhí)行sql的對(duì)象 Statement
    ? ? ? ? Statement stmt = conn.createStatement();
    ? ? ? ? //6.執(zhí)行sql
    ? ? ? ? int count = stmt.executeUpdate(sql);
    ? ? ? ? //7.處理結(jié)果
    ? ? ? ? System.out.println(count);
    ? ? ? ? //8.釋放資源
    ? ? ? ? stmt.close();
    ? ? ? ? conn.close();

    驅(qū)動(dòng)jar包解析

    ??

    ??

    IntelliJ IDEA 2017.3.4 x64 新建項(xiàng)目、新建模塊

    ??

    ??

    新建模塊

    ??

    ??

    Idea 新建包 不分級(jí) 解決方法

    ??

    ??

    ??

    將 MySQL驅(qū)動(dòng)jar包 添加到 Idea項(xiàng)目 中

    導(dǎo)入驅(qū)動(dòng)jar包 mysql-connector-java-5.1.37-bin.jar
    ?? ??? ??? ?1.復(fù)制mysql-connector-java-5.1.37-bin.jar到項(xiàng)目的libs目錄下
    ?? ??? ??? ?2.右鍵-->Add As Library

    ??

    ??

    Idea 連接 MySQL數(shù)據(jù)庫(kù) 代碼

    ??

    運(yùn)行文件JdbcDemo1.java文件,出現(xiàn)如下信息(百度查了一下,可能電腦內(nèi)存不夠...),重新點(diǎn)擊運(yùn)行按鈕,又好了。

    # There is insufficient memory for the Java Runtime Environment to continue.
    # Native memory allocation (malloc) failed to allocate 1048576 bytes for AllocateHeap
    # An error report file with more information is saved as:
    # F:\JetBrains\1ideaSpace\itcast\hs_err_pid2904.log

    package cn.itcast.jdbc;import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement;/*** JDBC快速入門*/ public class JdbcDemo1 {public static void main(String[] args) throws Exception {//1.導(dǎo)入驅(qū)動(dòng)jar包//2.注冊(cè)驅(qū)動(dòng)Class.forName("com.mysql.jdbc.Driver"); // 把類通過(guò)Class.forName()加載進(jìn)內(nèi)存//3.獲取數(shù)據(jù)庫(kù)連接對(duì)象Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/db3", "root", "root");//4.定義sql語(yǔ)句String sql = "update account set balance = 2000 where id = 1";//5.獲取執(zhí)行sql的對(duì)象 StatementStatement stmt = conn.createStatement();//6.執(zhí)行sqlint count = stmt.executeUpdate(sql);//7.處理結(jié)果System.out.println(count);//8.釋放資源stmt.close();conn.close();} }

    02 JDBC各個(gè)類詳解

    Idea 導(dǎo)入 項(xiàng)目

    ??

    ??

    ??

    ??

    ??

    JDBC各個(gè)類詳解_DriverManager

    3. 詳解各個(gè)對(duì)象:
    ?? ?1. DriverManager:驅(qū)動(dòng)管理對(duì)象
    ?? ??? ?* 功能:
    ?? ??? ??? ?1. 注冊(cè)驅(qū)動(dòng):告訴程序該使用哪一個(gè)數(shù)據(jù)庫(kù)驅(qū)動(dòng)jar包
    ?? ??? ??? ??? ?static void registerDriver(Driver driver) :注冊(cè)與給定的驅(qū)動(dòng)程序 DriverManager 。?
    ?? ??? ??? ??? ?寫代碼使用: ?Class.forName("com.mysql.jdbc.Driver");
    ?? ??? ??? ??? ?通過(guò)查看源碼發(fā)現(xiàn):在com.mysql.jdbc.Driver類中存在靜態(tài)代碼塊
    ?? ??? ??? ??? ? static {
    ?? ??? ??? ??? ? ? ? ? ?try {
    ?? ??? ??? ??? ? ? ? ? ? ? ?java.sql.DriverManager.registerDriver(new Driver());
    ?? ??? ??? ??? ? ? ? ? ?} catch (SQLException E) {
    ?? ??? ??? ??? ? ? ? ? ? ? ?throw new RuntimeException("Can't register driver!");
    ?? ??? ??? ??? ? ? ? ? ?}
    ?? ??? ??? ??? ??? ?}

    ?? ??? ??? ??? ?注意:mysql5之后的驅(qū)動(dòng)jar包可以省略注冊(cè)驅(qū)動(dòng)的步驟。
    ?? ??? ??? ?2. 獲取數(shù)據(jù)庫(kù)連接

    ?? ?2. Connection:數(shù)據(jù)庫(kù)連接對(duì)象

    ?? ?3. Statement:執(zhí)行sql的對(duì)象

    ?? ?4. ResultSet:結(jié)果集對(duì)象,封裝查詢結(jié)果

    JDBC各個(gè)類詳解_DriverManager

    3. 詳解各個(gè)對(duì)象:
    ?? ?1. DriverManager:驅(qū)動(dòng)管理對(duì)象
    ?? ??? ?* 功能:
    ?? ??? ??? ?1. 注冊(cè)驅(qū)動(dòng):告訴程序該使用哪一個(gè)數(shù)據(jù)庫(kù)驅(qū)動(dòng)jar包
    ?? ??? ??? ??? ?static void registerDriver(Driver driver) :注冊(cè)與給定的驅(qū)動(dòng)程序 DriverManager 。?
    ?? ??? ??? ??? ?寫代碼使用: ?Class.forName("com.mysql.jdbc.Driver");
    ?? ??? ??? ??? ?通過(guò)查看源碼發(fā)現(xiàn):在com.mysql.jdbc.Driver類中存在靜態(tài)代碼塊
    ?? ??? ??? ??? ? static {
    ?? ??? ??? ??? ? ? ? ? ?try {
    ?? ??? ??? ??? ? ? ? ? ? ? ?java.sql.DriverManager.registerDriver(new Driver());
    ?? ??? ??? ??? ? ? ? ? ?} catch (SQLException E) {
    ?? ??? ??? ??? ? ? ? ? ? ? ?throw new RuntimeException("Can't register driver!");
    ?? ??? ??? ??? ? ? ? ? ?}
    ?? ??? ??? ??? ??? ?}

    ?? ??? ??? ??? ?注意:mysql5之后的驅(qū)動(dòng)jar包可以省略注冊(cè)驅(qū)動(dòng)的步驟。
    ?? ??? ??? ?2. 獲取數(shù)據(jù)庫(kù)連接:
    ?? ??? ??? ??? ?* 方法:static Connection getConnection(String url, String user, String password)?
    ?? ??? ??? ??? ?* 參數(shù):
    ?? ??? ??? ??? ??? ?* url:指定連接的路徑
    ?? ??? ??? ??? ??? ??? ?* 語(yǔ)法:jdbc:mysql://ip地址(域名):端口號(hào)/數(shù)據(jù)庫(kù)名稱
    ?? ??? ??? ??? ??? ??? ?* 例子:jdbc:mysql://localhost:3306/db3
    ?? ??? ??? ??? ??? ??? ?* 細(xì)節(jié):如果連接的是本機(jī)mysql服務(wù)器,并且mysql服務(wù)默認(rèn)端口是3306,則url可以簡(jiǎn)寫為:jdbc:mysql:///數(shù)據(jù)庫(kù)名稱
    ?? ??? ??? ??? ??? ?* user:用戶名
    ?? ??? ??? ??? ??? ?* password:密碼

    DriverManager 獲取數(shù)據(jù)庫(kù)連接

    jdbc:mysql://ip地址(域名):端口號(hào)/數(shù)據(jù)庫(kù)名稱,端口號(hào):找到計(jì)算機(jī)上安裝的MySQL服務(wù)器。

    JDBC各個(gè)類詳解_Connection

    ?? ?2. Connection:數(shù)據(jù)庫(kù)連接對(duì)象(代表了當(dāng)前代碼和數(shù)據(jù)庫(kù)之間的橋梁)。
    ?? ??? ?1. 功能:
    ?? ??? ??? ?1. 獲取執(zhí)行sql 的對(duì)象
    ?? ??? ??? ??? ?* Statement createStatement()
    ?? ??? ??? ??? ?* PreparedStatement prepareStatement(String sql) ?
    ?? ??? ??? ?2. 管理事務(wù):
    ?? ??? ??? ??? ?* 開啟事務(wù):setAutoCommit(boolean autoCommit) :調(diào)用該方法設(shè)置參數(shù)為false,即開啟事務(wù)
    ?? ??? ??? ??? ?* 提交事務(wù):commit()?
    ?? ??? ??? ??? ?* 回滾事務(wù):rollback()?

    獲取執(zhí)行sql的對(duì)象

    管理事務(wù)

    事務(wù):

    JDBC各個(gè)類詳解_Statement

    ?? ?3. Statement:執(zhí)行sql的對(duì)象
    ?? ??? ?1. 執(zhí)行sql
    ?? ??? ??? ?1. boolean execute(String sql) :可以執(zhí)行任意的sql(了解)
    ?? ??? ??? ?2. int executeUpdate(String sql) :執(zhí)行DML(insert、update、delete)語(yǔ)句、DDL(create、alter、drop)語(yǔ)句
    ?? ??? ??? ??? ?* 返回值:影響的行數(shù),可以通過(guò)這個(gè)影響的行數(shù)判斷DML語(yǔ)句是否執(zhí)行成功。返回值>0,則執(zhí)行成功;反之,則失敗。
    ?? ??? ??? ?3. ResultSet executeQuery(String sql) :執(zhí)行DQL(select)語(yǔ)句

    03 JDBC之CRUD練習(xí)

    JDBC練習(xí)_insert語(yǔ)句

    ?? ?3. Statement:執(zhí)行sql的對(duì)象
    ?? ??? ?1. 執(zhí)行sql
    ?? ??? ??? ?1. boolean execute(String sql) :可以執(zhí)行任意的sql 了解?
    ?? ??? ??? ?2. int executeUpdate(String sql) :執(zhí)行DML(insert、update、delete)語(yǔ)句、DDL(create,alter、drop)語(yǔ)句
    ?? ??? ??? ??? ?* 返回值:影響的行數(shù),可以通過(guò)這個(gè)影響的行數(shù)判斷DML語(yǔ)句是否執(zhí)行成功 返回值>0的則執(zhí)行成功,反之,則失敗。
    ?? ??? ??? ?3. ResultSet executeQuery(String sql) ?:執(zhí)行DQL(select)語(yǔ)句
    ?? ??? ?2. 練習(xí):
    ?? ??? ??? ?1. account表 添加一條記錄
    ?? ??? ??? ?2. account表 修改記錄
    ?? ??? ??? ?3. account表 刪除一條記錄

    ?? ??? ??? ?代碼:...

    account表 添加一條記錄

    ??

    package cn.itcast.jdbc;import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement;/*** account表 添加一條記錄 insert 語(yǔ)句*/ public class JDBCDemo2 {public static void main(String[] args) {Statement stmt = null;Connection conn = null;try {//1. 注冊(cè)驅(qū)動(dòng)Class.forName("com.mysql.jdbc.Driver");//2. 定義sqlString sql = "insert into account values(null,'王五',3000)";//3.獲取Connection對(duì)象conn = DriverManager.getConnection("jdbc:mysql:///db3", "root", "root");//4.獲取執(zhí)行sql的對(duì)象 Statementstmt = conn.createStatement();//5.執(zhí)行sqlint count = stmt.executeUpdate(sql);//影響的行數(shù)//6.處理結(jié)果System.out.println(count);if (count > 0) {System.out.println("添加成功!");} else {System.out.println("添加失敗!");}} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();} finally {//stmt.close();//7. 釋放資源//避免空指針異常if (stmt != null) {try {stmt.close();} catch (SQLException e) {e.printStackTrace();}}if (conn != null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}} }

    JDBC練習(xí)_update語(yǔ)句

    account表 修改記錄

    package cn.itcast.jdbc;import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement;/*** account表 修改記錄*/ public class JDBCDemo3 {public static void main(String[] args) {Connection conn = null;Statement stmt = null;try {//1.注冊(cè)驅(qū)動(dòng)Class.forName("com.mysql.jdbc.Driver");//2.獲取連接對(duì)象conn = DriverManager.getConnection("jdbc:mysql:///db3", "root", "root");//3.定義sqlString sql = "update account set balance = 1500 where id = 3";//4.獲取執(zhí)行sql對(duì)象stmt = conn.createStatement();//5.執(zhí)行sqlint count = stmt.executeUpdate(sql);//6.處理結(jié)果System.out.println(count);if (count > 0) {System.out.println("修改成功!");} else {System.out.println("修改失敗!");}} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();} finally {//7.釋放資源if (stmt != null) {try {stmt.close();} catch (SQLException e) {e.printStackTrace();}}if (conn != null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}} }

    JDBC練習(xí)_update、DDL語(yǔ)句

    account表 刪除一條記錄

    package cn.itcast.jdbc;import cn.itcast.util.JDBCUtils;import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement;/*** account表 刪除一條記錄*/ public class JDBCDemo4 {public static void main(String[] args) {Connection conn = null;Statement stmt = null;try {//1. 注冊(cè)驅(qū)動(dòng)Class.forName("com.mysql.jdbc.Driver");//2.獲取連接對(duì)象conn = DriverManager.getConnection("jdbc:mysql:///db3", "root", "root");//conn = JDBCUtils.getConnection("jdbc:mysql:///db3", "root", "root");//3.定義sqlString sql = "delete from account where id = 3";//4.獲取執(zhí)行sql對(duì)象stmt = conn.createStatement();//5.執(zhí)行sqlint count = stmt.executeUpdate(sql);//6.處理結(jié)果System.out.println(count);if (count > 0) {System.out.println("刪除成功!");} else {System.out.println("刪除失敗!");}} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();} finally {//7.釋放資源if (stmt != null) {try {stmt.close();} catch (SQLException e) {e.printStackTrace();}}if (conn != null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}} }

    執(zhí)行DDL語(yǔ)句

    package cn.itcast.jdbc;import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.Statement;/*** 執(zhí)行DDL語(yǔ)句*/ public class JDBCDemo5 {public static void main(String[] args) {Connection conn = null;Statement stmt = null;try {//1. 注冊(cè)驅(qū)動(dòng)Class.forName("com.mysql.jdbc.Driver");//2.獲取連接對(duì)象conn = DriverManager.getConnection("jdbc:mysql:///db3", "root", "root");//3.定義sqlString sql = "create table student (id int, name varchar(20))";//4.獲取執(zhí)行sql對(duì)象stmt = conn.createStatement();//5.執(zhí)行sqlint count = stmt.executeUpdate(sql);//6.處理結(jié)果System.out.println(count);} catch (ClassNotFoundException e) {e.printStackTrace();} catch (SQLException e) {e.printStackTrace();} finally {//7.釋放資源if (stmt != null) {try {stmt.close();} catch (SQLException e) {e.printStackTrace();}}if (conn != null) {try {conn.close();} catch (SQLException e) {e.printStackTrace();}}}} }

    加油,趕緊學(xué),寧死不玩~

    總結(jié)

    以上是生活随笔為你收集整理的JDBC学习笔记01【JDBC快速入门、JDBC各个类详解、JDBC之CRUD练习】的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

    如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。