JavaWeb-初識JDBC

来源:https://www.cnblogs.com/coderaji/archive/2023/10/14/17764557.html
-Advertisement-
Play Games

目錄 1. JDBC簡介 2. JDBC項目 3. JDBC的導入 4. JDBC的使用 內容 JDBC簡介 什麼是JDBC JDBC的全稱是Java資料庫連接(Java Database connect),它是一套用於執行SQL語句的Java API。應用程式可通過這套API連接到關係資料庫,並使 ...


目錄

1. JDBC簡介
2. JDBC項目
3. JDBC的導入
4. JDBC的使用

內容

JDBC簡介

  1. 什麼是JDBC
    JDBC的全稱是Java資料庫連接(Java Database connect),它是一套用於執行SQL語句的Java API。應用程式可通過這套API連接到關係資料庫,並使用SQL語句來完成對資料庫中數據的查詢、更新和刪除等操作。

2.什麼是mysql-connector-java
mysql-connector-java 是MySQL的JDBC驅動包,用JDBC連接MySQL資料庫時必須使用該jar包。

JDBC項目

  1. 打開IDEA新建項目,填寫項目名,選擇項目路徑

  2. 按照Java代碼書寫規範創建一個包並創建一個類

JDBC的導入

  1. 下載JDBC(MySQL版)

  2. 跳轉至版本選擇頁面

  3. 選擇版本下載

  4. 解壓mysql-connector-java-8.0.25.zip,生成mysql-connector-java-8.0.25

  5. 在JDBC項目所在目錄下創建lib文件夾

  6. 打開mysql-connector-java-8.0.25目錄,複製mysql-connector-java-8.0.25.jar

  7. 把mysql-connector-java-8.0.25.jar粘貼到lib目錄下

  8. 打開項目,點擊File->Project Structure

  9. 點擊Libraries -> + ->Java

  10. 選擇lib目錄下的mysql-connector-java-8.0.25.jar

  11. 點擊ok

  12. 點擊ok

  13. 查看mysql-connector-java-8.0.25.jar是否導入成功

JDBC的使用

  1. 必須提前安裝MySQL並且MySQL可用
  2. 載入MySQL驅動程式
package com.example.aji;

public class Main {
    public static void main(String[] args) {
        try {
            //載入MySQL驅動程式
            Class.forName("com.mysql.cj.jdbc.Driver");
        }catch (Exception e){
            e.printStackTrace();
        }
        //列印出Hello world!表名驅動程式載入成功
        System.out.println("Hello world!");
    }
}
  1. DriverManager類
    管理一組JDBC驅動程式的基本服務。一些常用方法:

    • getConnection​(String url, String user, String password)
      嘗試建立與給定資料庫URL的連接。
    package com.example.aji;
    
    import java.sql.DriverManager;
    
    public class Main {
        public static void main(String[] args) {
            try {
                Class.forName("com.mysql.cj.jdbc.Driver");
                //mysql資料庫相關信息
                String url="jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf-8";
                String user="root";
                String password="123456789";
                DriverManager.getConnection(url,user,password);
            }catch (Exception e){
                e.printStackTrace();
            }
            System.out.println("Hello world!");
        }
    }
    
  2. Connection類
    Connection與特定資料庫的連接(會話)。 執行SQL語句併在連接的上下文中返回結果。Connection對象的資料庫能夠提供描述其表,其支持的SQL語法,其存儲過程,此連接的功能等的信息。 一些常用方法:

    • close()
      立即釋放此 Connection對象的資料庫和JDBC資源,而不是等待它們自動釋放。

    • createStatement()
      創建一個 Statement對象,用於將SQL語句發送到資料庫。

    package com.example.aji;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    
    public class Main {
        public static void main(String[] args) {
            try {
                Class.forName("com.mysql.cj.jdbc.Driver");
                //mysql資料庫相關信息
                String url="jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf-8";
                String user="root";
                String password="123456789";
                Connection connection = DriverManager.getConnection(url,user,password);
                connection.close();
            }catch (Exception e){
                e.printStackTrace();
            }
            System.out.println("Hello world!");
        }
    }
    
  3. Statement類
    用於執行靜態SQL語句並返回其生成的結果的對象。一些常用方法:

    • close()
      立即釋放此 Statement對象的資料庫和JDBC資源,而不是等待它自動關閉時發生。

    • executeUpdate​(String sql)
      執行給定的SQL語句,這可能是 INSERT , UPDATE ,或 DELETE語句,或者不返回任何內容,如SQL DDL語句的SQL語句。

    package com.example.aji;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.Statement;
    
    public class Main {
        public static void main(String[] args) {
            try {
                Class.forName("com.mysql.cj.jdbc.Driver");
                //mysql資料庫相關信息
                String url="jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf-8";
                String user="root";
                String password="123456789";
                Connection connection = DriverManager.getConnection(url,user,password);
                Statement statement = connection.createStatement();
                String updateSql="CREATE TABLE `t_person` (\n" +
                        "  `id` int(11) NOT NULL AUTO_INCREMENT COMMENT '主鍵',\n" +
                        "  `name` varchar(30) NOT NULL COMMENT '姓名',\n" +
                        "  `birthdate` datetime NOT NULL COMMENT '出生日期',\n" +
                        "  PRIMARY KEY (`id`)\n" +
                        ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;";
                int result = statement.executeUpdate(updateSql);
                System.out.println(result);
                String insertSql="insert into t_person(name,birthdate) values('aji',now()),('aji',now())";
                result = statement.executeUpdate(insertSql);
                System.out.println(result);
                statement.close();
                connection.close();
            }catch (Exception e){
                e.printStackTrace();
            }
            System.out.println("Hello world!");
        }
    }
    
    • executeQuery​(String sql)
      執行給定的SQL語句,該語句返回單個 ResultSet對象。
    package com.example.aji;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.Statement;
    import java.sql.ResultSet;
    
    public class Main {
        public static void main(String[] args) {
            try {
                Class.forName("com.mysql.cj.jdbc.Driver");
                //mysql資料庫相關信息
                String url="jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf-8";
                String user="root";
                String password="123456789";
                Connection connection = DriverManager.getConnection(url,user,password);
                Statement statement = connection.createStatement();
                String querySql="select * from t_person";
                ResultSet resultSet = statement.executeQuery(querySql);
                //列印查詢結果
                while (resultSet.next()) {
                    System.out.print(resultSet.getInt("id"));
                    System.out.print(resultSet.getString("name"));
                    System.out.println(resultSet.getDate("birthdate"));
                }
                resultSet.close();
                statement.close();
                connection.close();
            }catch (Exception e){
                e.printStackTrace();
            }
            System.out.println("Hello world!");
        }
    }
    
    • execute​(String sql)
      執行給定的SQL語句並返回boolean值
    package com.example.aji;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.Statement;
    import java.sql.ResultSet;
    
    public class Main {
        public static void main(String[] args) {
            try {
                Class.forName("com.mysql.cj.jdbc.Driver");
                //mysql資料庫相關信息
                String url="jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf-8";
                String user="root";
                String password="123456789";
                Connection connection = DriverManager.getConnection(url,user,password);
                Statement statement = connection.createStatement();
                String querySql="select * from t_person";
                ResultSet resultSet = statement.executeQuery(querySql);
                boolean execute = statement.execute(querySql);
                //列印查詢結果
                System.out.println(execute);
                resultSet.close();
                statement.close();
                connection.close();
            }catch (Exception e){
                e.printStackTrace();
            }
            System.out.println("Hello world!");
        }
    }
    
  4. ResultSet類
    表示資料庫結果集的數據表,通常通過執行查詢資料庫的語句生成。一些常用方法:

    • close()
      立即釋放此 Statement對象的資料庫和JDBC資源,而不是等待它自動關閉時發生。

    • next()
      將游標從當前位置向前移動一行。

    package com.example.aji;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.Statement;
    import java.sql.ResultSet;
    
    public class Main {
        public static void main(String[] args) {
            try {
                Class.forName("com.mysql.cj.jdbc.Driver");
                //mysql資料庫相關信息
                String url="jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf-8";
                String user="root";
                String password="123456789";
                Connection connection = DriverManager.getConnection(url,user,password);
                Statement statement = connection.createStatement();
                String querySql="select * from t_person";
                ResultSet resultSet = statement.executeQuery(querySql);
                boolean execute = statement.execute(querySql);
                //列印查詢結果
                System.out.println(execute);
                resultSet.close();
                statement.close();
                connection.close();
            }catch (Exception e){
                e.printStackTrace();
            }
            System.out.println("Hello world!");
        }
    }
    
    • getInt​(String columnLabel)
      以Java編程語言中 int此 ResultSet對象的當前行中指定列的值。
    package com.example.aji;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.Statement;
    import java.sql.ResultSet;
    
    public class Main {
        public static void main(String[] args) {
            try {
                Class.forName("com.mysql.cj.jdbc.Driver");
                //mysql資料庫相關信息
                String url="jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf-8";
                String user="root";
                String password="123456789";
                Connection connection = DriverManager.getConnection(url,user,password);
                Statement statement = connection.createStatement();
                String querySql="select * from t_person";
                ResultSet resultSet = statement.executeQuery(querySql);
                boolean execute = statement.execute(querySql);
                //列印查詢結果
                System.out.println(execute);
                resultSet.close();
                statement.close();
                connection.close();
            }catch (Exception e){
                e.printStackTrace();
            }
            System.out.println("Hello world!");
        }
    }
    

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文以瀏覽器的進程和線程為切入點,以開源的Chromium為例,記錄了前端中的事件迴圈。同時記錄了一些面試題。關鍵詞:隊列,非同步。 ...
  • matomo是一款Google-analytics數據埋點採集上報的平替方案,可保護您的數據和客戶的隱私;正如它官網的slogan: Google Analytics alternative that protects your data and your customers' privacy; 該 ...
  • v-model 是 Vue.js 框架中的一個重要指令,用於實現雙向數據綁定。它是一個語法糖,等效於使用 :value 和 @input 事件的組合。v-model 的工作原理可以分為以下步驟:首先,Vue 創建一個代理對象,其中包含了數據屬性,例如 message。初始時,表單元素的值會被設置為數 ...
  • 具體以電子商務網站為例, 展示web應用的架構演變過程。 1.0時代 這個時候是一個web項目里包含了所有的模塊,一個資料庫里包含了所需要的所有表,這時候網站訪問量增加時,首先遇到瓶頸的是應用伺服器連接數,比如tomcat連接數不能無限增加,線程數上限受進程記憶體大小、CPU內核數等因素影響,當線程數 ...
  • 目錄 1. Maven簡介 2. Maven下載安裝 3. Maven項目創建 4. Maven項目導入依賴 內容 Maven簡介 Maven是什麼 Maven 是 Apache 下的一個純 Java 開發的開源項目。基於項目對象模型(縮寫:POM)概念,Maven利用一個中央信息片斷能管理一個項目 ...
  • 本篇文章深入探討了Go語言的泛型特性,從其基礎概念到高級用法,並通過實戰示例展示了其在實際項目中的應用。 關註【TechLeadCloud】,分享互聯網架構、雲服務技術的全維度知識。作者擁有10+年互聯網服務架構、AI產品研發經驗、團隊管理經驗,同濟本復旦碩,復旦機器人智能實驗室成員,阿裡雲認證的資 ...
  • 目錄 1. MySQL準備 2. JDBC項目 3. JDBC新增 4. JDBC查詢 5. JDBC修改 6. JDBC刪除 內容 MySQL準備 新建表t_person CREATE TABLE `t_person` ( `id` int(11) NOT NULL AUTO_INCREMENT ...
  • 錯誤也可以理解為異常,代表應用程式在執行過程中的發生了非預期的行為,常見異常比如有空指針、數組越界、網路超時、IO異常等,Dart語言也支持拋出和捕獲異常。和Java不同的是,Dart語言只有未檢測異常。Dart中的異常需要被捕獲並被處理,否則可能導致程式退出…… ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...