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

如何使用JDBC連接數據庫并執(zhí)行SQL語句

 更新時間:2023年04月28日 11:12:57   作者:互聯小助手  
JDBC是Java數據庫連接的縮寫,是Java程序與數據庫進行交互的標準API。JDBC主要包括Java.sql和javax.sql兩個包,通過DriverManager獲取數據庫連接對象Connection,并通過Statement或PreparedStatement執(zhí)行SQL語句

1. JDBC入門

JDBC(Java Database Connectivity)是Java程序與數據庫進行交互的一種標準接口,它提供了一種簡單的方式來連接和操作數據庫。在使用JDBC之前,需要先了解以下幾個概念:

  • JDBC Driver:JDBC驅動程序是一個Java類,用于將Java應用程序與特定數據庫管理系統(DBMS)連接。JDBC驅動程序分為四種類型:JDBC-ODBC橋接驅動程序、本地API驅動程序、網絡協議驅動程序和本地協議驅動程序。
  • Connection:Connection是一個JDBC接口,用于連接到數據庫。在Java程序中,通過Connection接口的實現類來實現與數據庫的連接。
  • Statement:Statement是一個JDBC接口,用于向數據庫發(fā)送SQL語句并執(zhí)行它們。在Java程序中,通過Connection對象創(chuàng)建Statement對象。
  • ResultSet:ResultSet是一個JDBC接口,用于表示從數據庫中檢索到的結果集。ResultSet對象通過Statement對象的executeQuery()方法返回。

下面是一個簡單的JDBC連接示例:

import java.sql.*;
public class JDBCDemo {
    public static void main(String[] args) {
        try {
            // 加載JDBC驅動程序
            Class.forName("com.mysql.cj.jdbc.Driver");
            // 建立數據庫連接
            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/mydb", "root", "password");
            // 執(zhí)行SQL查詢
            Statement stmt = conn.createStatement();
            ResultSet rs = stmt.executeQuery("SELECT * FROM users");
            while (rs.next()) {
                System.out.println(rs.getInt(1) + ", " + rs.getString(2) + ", " + rs.getString(3));
            }
            // 關閉數據庫連接
            rs.close();
            stmt.close();
            conn.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

2. 抽取工具類

在實際開發(fā)中,我們通常會抽取出一個JDBC工具類來封裝JDBC相關操作,以方便代碼的重用和維護。下面是一個簡單的JDBC工具類示例:

import java.sql.*;
public class JDBCUtils {
    private static final String URL = "jdbc:mysql://localhost:3306/mydb";
    private static final String USER = "root";
    private static final String PASSWORD = "password";
    static {
        try {
            // 加載JDBC驅動程序
            Class.forName("com.mysql.cj.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
    public static Connection getConnection() {
        Connection conn = null;
        try {
            // 建立數據庫連接
            conn = DriverManager.getConnection(URL, USER, PASSWORD);
        } catch (SQLException e) {
            e.printStackTrace();
        }
        return conn;
    }
    public static void release(ResultSet rs, Statement stmt, Connection conn) {
        try {
            if (rs != null) rs.close();
            if (stmt != null) stmt.close();
            if (conn != null) conn.close();
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

3. Statement CRUD

Statement是JDBC中最基本的操作方式,它用于向數據庫發(fā)送SQL語句并執(zhí)行它們。下面是一個使用Statement進行CRUD操作的示例:

import java.sql.*;
public class StatementCRUD {
    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        ResultSet rs = null;
        try {
            conn = JDBCUtils.getConnection();
            stmt = conn.createStatement();
            // 插入數據
            String sql = "INSERT INTO users (name, age) VALUES ('Tom', 18)";
            stmt.executeUpdate(sql);
            // 更新數據
            sql = "UPDATE users SET age = 20 WHERE name = 'Tom'";
            stmt.executeUpdate(sql);
            // 刪除數據
            sql = "DELETE FROM users WHERE age = 20";
            stmt.executeUpdate(sql);
            // 查詢數據
            sql = "SELECT * FROM users";
            rs = stmt.executeQuery(sql);
            while (rs.next()) {
                System.out.println(rs.getInt(1) + ", " + rs.getString(2) + ", " + rs.getInt(3));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JDBCUtils.release(rs, stmt, conn);
        }
    }
}

4. 演練CRUD

下面是一個使用PreparedStatement進行CRUD操作的示例:

import java.sql.*;
public class PreparedStatementCRUD {
    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        try {
            conn = JDBCUtils.getConnection();
            // 插入數據
            String sql = "INSERT INTO users (name, age) VALUES (?, ?)";
            pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, "Tom");
            pstmt.setInt(2, 18);
            pstmt.executeUpdate();
            // 更新數據
            sql = "UPDATE users SET age = ? WHERE name = ?";
            pstmt = conn.prepareStatement(sql);
            pstmt.setInt(1, 20);
            pstmt.setString(2, "Tom");
            pstmt.executeUpdate();
            // 刪除數據
            sql = "DELETE FROM users WHERE age = ?";
            pstmt = conn.prepareStatement(sql);
            pstmt.setInt(1, 20);
            pstmt.executeUpdate();
            // 查詢數據
            sql = "SELECT * FROM users";
            pstmt = conn.prepareStatement(sql);
            rs = pstmt.executeQuery();
            while (rs.next()) {
                System.out.println(rs.getInt(1) + ", " + rs.getString(2) + ", " + rs.getInt(3));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JDBCUtils.release(rs, pstmt, conn);
        }
    }
}

5. Dao模式(聲明與實現分開)

Dao(Data Access Object)模式是一種用于封裝數據訪問邏輯的設計模式。它將數據訪問邏輯與業(yè)務邏輯分離開來,使得代碼更易于維護和擴展。下面是一個使用Dao模式進行CRUD操作的示例:

import java.sql.*;
public class UserDAO {
    private static final String INSERT_SQL = "INSERT INTO users (name, age) VALUES (?, ?)";
    private static final String UPDATE_SQL = "UPDATE users SET age = ? WHERE name = ?";
    private static final String DELETE_SQL = "DELETE FROM users WHERE age = ?";
    private static final String SELECT_SQL = "SELECT * FROM users";
    public void insert(User user) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        try {
            conn = JDBCUtils.getConnection();
            pstmt = conn.prepareStatement(INSERT_SQL);
            pstmt.setString(1, user.getName());
            pstmt.setInt(2, user.getAge());
            pstmt.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JDBCUtils.release(null, pstmt, conn);
        }
    }
    public void update(User user) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        try {
            conn = JDBCUtils.getConnection();
            pstmt = conn.prepareStatement(UPDATE_SQL);
            pstmt.setInt(1, user.getAge());
            pstmt.setString(2, user.getName());
            pstmt.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JDBCUtils.release(null, pstmt, conn);
        }
    }
    public void delete(int age) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        try {
            conn = JDBCUtils.getConnection();
            pstmt = conn.prepareStatement(DELETE_SQL);
            pstmt.setInt(1, age);
            pstmt.executeUpdate();
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JDBCUtils.release(null, pstmt, conn);
        }
    }
    public List<User> selectAll() {
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        List<User> userList = new ArrayList<>();
        try {
            conn = JDBCUtils.getConnection();
            pstmt = conn.prepareStatement(SELECT_SQL);
            rs = pstmt.executeQuery();
            while (rs.next()) {
                User user = new User();
                user.setId(rs.getInt(1));
                user.setName(rs.getString(2));
                user.setAge(rs.getInt(3));
                userList.add(user);
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JDBCUtils.release(rs, pstmt, conn);
        }
        return userList;
    }
}
public class User {
    private int id;
    private String name;
    private int age;
    // 省略getter、setter方法
}

6. PrepareStatement CRUD

PreparedStatement是一種預編譯的Statement,它可以通過占位符的方式來替換SQL語句中的參數,避免了SQL注入的危險。下面是一個使用PreparedStatement進行CRUD操作的示例:

import java.sql.*;
public class PrepareStatementCRUD {
    public static void main(String[] args) {
        Connection conn = null;
        PreparedStatement pstmt = null;
        ResultSet rs = null;
        try {
            conn = JDBCUtils.getConnection();
            // 插入數據
            String sql = "INSERT INTO users (name, age) VALUES (?, ?)";
            pstmt = conn.prepareStatement(sql);
            pstmt.setString(1, "Tom");
            pstmt.setInt(2, 18);
            pstmt.executeUpdate();
            // 更新數據
            sql = "UPDATE users SET age = ? WHERE name = ?";
            pstmt = conn.prepareStatement(sql);
            pstmt.setInt(1, 20);
            pstmt.setString(2, "Tom");
            pstmt.executeUpdate();
            // 刪除數據
            sql = "DELETE FROM users WHERE age = ?";
            pstmt = conn.prepareStatement(sql);
            pstmt.setInt(1, 20);
            pstmt.executeUpdate();
            // 查詢數據
            sql = "SELECT * FROM users";
            pstmt = conn.prepareStatement(sql);
            rs = pstmt.executeQuery();
            while (rs.next()) {
                System.out.println(rs.getInt(1) + ", " + rs.getString(2) + ", " + rs.getInt(3));
            }
        } catch (SQLException e) {
            e.printStackTrace();
        } finally {
            JDBCUtils.release(rs, pstmt, conn);
        }
    }
}

以上就是關于JDBC入門、抽取工具類、Statement CRUD、演練CRUD、Dao模式(聲明與實現分開)、PrepareStatement CRUD的詳細介紹和代碼示例。通過學習這些內容,可以讓我們更好地掌握JDBC的使用和開發(fā)技巧,從而更好地應用到實際的項目中。

到此這篇關于如何使用JDBC連接數據庫并執(zhí)行SQL語句的文章就介紹到這了,更多相關JDBC連接數據庫內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 通過實例解析java8中的parallelStream

    通過實例解析java8中的parallelStream

    這篇文章主要介紹了通過實例解析java8中的parallelStream,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-11-11
  • Java Enum和String及int的相互轉化示例

    Java Enum和String及int的相互轉化示例

    這篇文章主要介紹了Java Enum和String及int的相互轉化示例,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-06-06
  • Java實現讀取Excel文件功能(EasyExcel初使用)

    Java實現讀取Excel文件功能(EasyExcel初使用)

    EasyExcel是一款基于Java語言的開源Excel解析工具,可以幫助我們快速、高效地讀取和寫入Excel文件,這篇文章主要給大家介紹了關于Java實現讀取Excel文件功能的相關資料,使用的是EasyExcel,需要的朋友可以參考下
    2024-07-07
  • 詳解Java中的ThreadLocal

    詳解Java中的ThreadLocal

    ThreadLocal是JDK包提供的,它提供線程本地變量,如果創(chuàng)建一個ThreadLocal變量,那么訪問這個變量的每個線程都會有這個變量的一個副本,在實際多線程操作的時候,操作的是自己本地內存中的變量,從而規(guī)避了線程安全問題
    2021-06-06
  • springboot實現mock平臺的示例代碼

    springboot實現mock平臺的示例代碼

    本文主要介紹了springboot實現mock平臺的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2022-06-06
  • Java集合去重導致的線上問題

    Java集合去重導致的線上問題

    這篇文章主要介紹了Java集合去重導致的線上問題,根據主題提出Set是怎樣保證數據的唯一性的,為什么兩種去重方式性能差距這么大的問題,下文解決思路需要的小伙伴可以參考一下
    2022-04-04
  • Java中的排序與內部比較器Compareable解析

    Java中的排序與內部比較器Compareable解析

    這篇文章主要介紹了Java中的排序與內部比較器Compareable解析,一般沒有特殊要求時,直接調用(底層默認的升序排列)就可以得到想要的結果,所謂的 sort 方法排序底層都是基于這兩種排序,故如果需要設計成所想要的排序就需要了解底層排序原理,需要的朋友可以參考下
    2023-11-11
  • 詳解MyBatis Generator自動創(chuàng)建代碼(dao,mapping,poji)

    詳解MyBatis Generator自動創(chuàng)建代碼(dao,mapping,poji)

    這篇文章主要介紹了詳解MyBatis Generator自動創(chuàng)建代碼(dao,mapping,poji)的相關資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2016-10-10
  • sublime編譯器怎么運行java程序

    sublime編譯器怎么運行java程序

    Sublime是一款強大的代碼編輯器,它提供了豐富的功能和插件,可以幫助開發(fā)者提高代碼的編寫效率和質量,通過安裝相關插件和進行簡單配置,我們可以輕松地在Sublime中編譯和運行Java代碼,下面我們將詳細介紹如何配置Sublime,使其能夠高效地運行Java代碼
    2024-06-06
  • 淺談JAVA 責任鏈模式

    淺談JAVA 責任鏈模式

    這篇文章主要介紹了JAVA 責任鏈模式的的相關資料,文中講解非常細致,代碼幫助大家更好的理解和學習,感興趣的朋友可以了解下
    2020-06-06

最新評論

女性| 江城| 寿光市| 西林县| 民勤县| 库车县| 肇东市| 武川县| 益阳市| 科技| 龙岩市| 通化市| 普定县| 潞西市| 嘉定区| 汤阴县| 景泰县| 峡江县| 类乌齐县| 吉安县| 东方市| 喀喇| 通许县| 临高县| 班戈县| 防城港市| 紫阳县| 大港区| 固原市| 鲜城| 施甸县| 景谷| 凤冈县| 宁都县| 吉水县| 唐海县| 博乐市| 武定县| 兴文县| 石首市| 汾西县|