JDBC實現簡單增刪改查

来源:https://www.cnblogs.com/tianming18/archive/2019/01/24/10315037.html
-Advertisement-
Play Games

JDBC全稱為:Java Data Base Connectivity (java資料庫連接),主要用於java與資料庫的鏈接。 整個鏈接過程如下圖: 1.資料庫驅動:Driver 載入mysql驅動:Class.forName("com.mysql.jdbc.Driver"); 載入oracle驅 ...


JDBC全稱為:Java Data Base Connectivity (java資料庫連接),主要用於java與資料庫的鏈接。

 

整個鏈接過程如下圖:

 

 

1.資料庫驅動:Driver

載入mysql驅動:Class.forName("com.mysql.jdbc.Driver");

載入oracle驅動:Class.forName("oracle.jdbc.driver.OracleDriver");

載入相應的驅動需要導入相應的包,如MySQL則需要導入:mysql-connector-java-5.1.13-bin.jar

否則無法正常執行。

 

2.獲取資料庫鏈接:Connection

Connetion類主要用來鏈接資料庫,常通過DriverManager.getConnection()來獲取一個連接對象。
這裡有3個參數,分別是url,user,passwrod。對應的是要鏈接的資料庫,用戶名,密碼等。如:
url=jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf-8
user=root
password=root


3.執行sql語句:Statement

Statement對象用於執行sql語句,有以下3種:

(1)Statement對象用於執行不帶參數的簡單的SQL語句;

(2)PerparedStatement對象用於執行帶或不帶參數的預編譯SQL語句;

(3)CallableStatement對象用於執行對資料庫已存儲過程的調用;

   Statement的常用方法:

(1)executeQuery()方法:運行查詢語句,返回ReaultSet對象。

(2)executeUpdata()方法:運行增,刪,改操作,返回更新的行數。

(3)addBatch(String sql) :把多條sql語句放到一個批處理中。

(4)executeBatch():向資料庫發送一批sql語句執行。

 

4.結果集:ResultSet

執行executeQuery()方法後返回的結果集

  常用方法:
(1)getString(String columnName):獲得當前行的某一string類型的欄位
(2)getFloat(String columnName):獲得當前行的某一string類型的欄位
(3)getDate(String columnName):獲得當前行的某一date類型的欄位
(4)getBoolean(String columnName):獲得在當前行的某一Boolean類型的欄位
(5)getObject(String columnName):獲取當前行的某一任意類型的欄位
(6)next():移動到下一行

 

實際代碼

首先建立一個配置文件,內容如下:

#資料庫驅動
driver=com.mysql.jdbc.Driver
#連接資料庫的URL
url=jdbc:mysql://localhost:3306/jdbc?useUnicode=true&characterEncoding=utf-8
#用戶名
user=root
#密碼
password=root

接著寫一個連接資料庫的通用工具類:

public class DBUtil {
    private static String driver;
    private static String url;
    private static String user;
    private static String password;
    
    static{
        try {
            //讀取配置文件
            InputStream in = DBUtil.class.getResourceAsStream("db.properties");
            Properties properties = new Properties();
            //載入配置文件
            properties.load(in);
            //獲取配置文件中的數據
            driver = properties.getProperty("driver");
            url = properties.getProperty("url");
            user = properties.getProperty("user");
            password = properties.getProperty("password");
            //載入資料庫鏈接驅動
            Class.forName(driver);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    
    /**
     * 獲取一個資料庫鏈接
     */
    public static Connection getConnection() throws SQLException{
        return DriverManager.getConnection(url, user, password);
    }
}

實現簡單的增刪改查:

public class jdbcTest {
 
    /**
     * 創建表
     */
    public static void createTable() throws SQLException{
        String sql = "CREATE TABLE IF NOT EXISTS `user`("
                 +"`id` INT UNSIGNED AUTO_INCREMENT,"
                   +" `user_name` VARCHAR(100),"
                   +" `user_password` VARCHAR(100),"
                   +" `user_age` INT(11),"
                   +"PRIMARY KEY ( `id` )"
                   +")ENGINE=InnoDB DEFAULT CHARSET=utf8;";
        Connection conn = DBUtil.getConnection();
        //開啟事務
        conn.setAutoCommit(false);
        PreparedStatement preparedStatement = conn.prepareStatement(sql);
        preparedStatement.executeUpdate();
        //提交事務
        conn.commit();
        //要註意關閉連接(在實際中最好不要像這樣關閉,最好標準一點)
        conn.close();
    }
    
    /**
     * 增加數據
     */
    public static void add() throws SQLException{
        String sql = "INSERT INTO USER (user_name,user_password,user_age) VALUES('老王','123456',18)";
        Connection conn = DBUtil.getConnection();
        conn.setAutoCommit(false);
        PreparedStatement preparedStatement = conn.prepareStatement(sql);
        preparedStatement.executeUpdate();
        conn.commit();
        conn.close();
    }
    
    /**
     * 刪除數據
     */
    public static void delete() throws SQLException{
        String sql = "DELETE FROM USER WHERE USER.user_name = '老王'";
        Connection conn = DBUtil.getConnection();
        conn.setAutoCommit(false);
        PreparedStatement preparedStatement = conn.prepareStatement(sql);
        preparedStatement.executeUpdate();
        conn.commit();
        conn.close();
    }
    
    /**
     * 修改數據
     */
    public static void updata() throws SQLException{
        String sql = "UPDATE USER SET USER.user_name = '老李'";
        Connection conn = DBUtil.getConnection();
        conn.setAutoCommit(false);
        PreparedStatement preparedStatement = conn.prepareStatement(sql);
        preparedStatement.executeUpdate();
        conn.commit();
        conn.close();
    }
    
    /**
     * 查找數據
     */
    public static void query() throws SQLException{
        String sql = "SELECT * FROM USER";
        Connection conn = DBUtil.getConnection();
        conn.setAutoCommit(false);
        PreparedStatement preparedStatement = conn.prepareStatement(sql);
        //執行查詢語句並返回結果集
        ResultSet resultSet = preparedStatement.executeQuery();
        while (resultSet.next()) {
            //註意:這裡要與資料庫里的欄位對應
            String username = resultSet.getString("user_name");
            String password = resultSet.getString("user_password");
            String age = resultSet.getString("user_age");
            System.out.println(username + " " + password + " " + age);
        }
        conn.commit();
        conn.close();
    }
}

這是我的文件結構:

註意要導入相應的包,大家需要自行下載MySQL的依賴包。

 


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

-Advertisement-
Play Games
更多相關文章
  • 1、查看防火牆狀態,哪些埠開放了 /etc/init.d/iptables status 2、配置防火牆 vi /etc/sysconfig/iptables ###################################### # Firewall configuration writt ...
  • DECLARE @Y1002 varchar(200),@A0100 varchar(200),@C0103 datetime ----定義變數 DECLARE Police_Department CURSOR FOR --定義游標 SELECT Y1002,A0100,C0103... ...
  • 一. 需求背景 MongoDB資料庫的強大的文檔模型使其成為處理數據的最佳方式。文檔適用於廣泛的流行數據模型,支持各種各樣的場景。文檔模型可以包含鍵值、關係數據集和圖形數據集,當然,還可以包含父子關係、列表/數組以及其他層次關係,它們比傳統的關係型資料庫技術(表格)具有更大的靈活性。由於文檔模型與主 ...
  • 總結幾個剛接觸到的sql語句,以後慢慢完善。 一、添加數據,insert語句 insert into table set columnName1 = value1,columnName2 = value2,…; sq1 = 'insert into boke_articles set ?'此處的問號 ...
  • 作為一個新手,第一次接觸資料庫,搞了兩天才創建自己的第一個資料庫,走了不少彎路,現總結一下: 一、設置MySql環境 安裝的XAMPP,下載了Navigate for MySql。 啟動Apache 和Mysql,連接伺服器 綠色代表啟動成功。 二、打開Navigate for MySql 創建服務 ...
  • 背景描述 問題分析 Q1:為什麼會產生臨時表? 這個不多說,SQL寫的惹不起,反正就是半個小時看不懂的那種,就是一眼就知道一定會產生臨時表的😂~~~ Q2:登錄到機器上去查看記憶體使用偏小? 因為這個物理機的記憶體是125G,但是mysql的總數據量不超過1G,所有實際並不需要多少記憶體就可以將所有數據 ...
  • 1.下載壓縮包,地址1(官網下載):https://www.mysql.com/downloads/ 地址2(百度網盤):https://pan.baidu.com/s/12lnpcr3thBe9k-6CyxvHeg 提取碼: j9ya 官網下載方法如下: 2.解壓壓縮包到自己喜歡的文件夾中;(以我 ...
  • 前言 java連接資料庫完整流程為: 1,獲得驅動(driver),資料庫連接(url),用戶名(username),密碼(password)基本信息的三種方式。 2,通過獲得的信息完成JDBC實現連接資料庫。 註:連接前請導入jar包,例:連接mysql資料庫需要導入mysql-connector ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...