欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

java JDBC主要組件連接數(shù)據(jù)庫及執(zhí)行SQL過程示例全面詳解

 更新時(shí)間:2023年06月05日 11:50:04   作者:移動安全星球  
這篇文章主要為大家介紹了java JDBC主要組件連接數(shù)據(jù)庫及執(zhí)行SQL的過程示例全面詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

什么是JDBC?

JDBC(Java Database Connectivity)是一個(gè)Java API,用于連接和執(zhí)行SQL語句與關(guān)系型數(shù)據(jù)庫進(jìn)行交互。JDBC提供了一組接口和類,使Java程序能夠與各種數(shù)據(jù)庫通信,如MySQL、Oracle、PostgreSQL等。

JDBC的主要組件

JDBC主要由以下幾個(gè)組件組成:

  • DriverManager:負(fù)責(zé)加載數(shù)據(jù)庫驅(qū)動,并建立與數(shù)據(jù)庫的連接。
  • Connection:表示與數(shù)據(jù)庫的連接。
  • Statement:用于執(zhí)行SQL語句。
  • PreparedStatement:用于執(zhí)行預(yù)編譯的SQL語句。
  • ResultSet:表示查詢結(jié)果集。

連接數(shù)據(jù)庫

在連接數(shù)據(jù)庫之前,需要確保已經(jīng)安裝了相應(yīng)的數(shù)據(jù)庫驅(qū)動并將其添加到項(xiàng)目中。以下是一個(gè)簡單示例,演示如何使用JDBC連接到MySQL數(shù)據(jù)庫:

import java.sql.Connection;
import java.sql.DriverManager;
public class JdbcConnectExample {
    public static void main(String[] args) {
        try {
            // 加載數(shù)據(jù)庫驅(qū)動
            Class.forName("com.mysql.cj.jdbc.Driver");
            // 連接到數(shù)據(jù)庫
            String url = "jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true";
            String username = "root";
            String password = "mypassword";
            Connection connection = DriverManager.getConnection(url, username, password);
            System.out.println("Connected to database!");
            // 關(guān)閉連接
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

執(zhí)行SQL查詢

要使用JDBC執(zhí)行SQL查詢,可以創(chuàng)建一個(gè)Statement對象,然后調(diào)用其executeQuery()方法。以下是一個(gè)簡單示例,演示如何查詢數(shù)據(jù)庫中的數(shù)據(jù):

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JdbcQueryExample {
    public static void main(String[] args) {
        try {
            // 加載數(shù)據(jù)庫驅(qū)動并連接到數(shù)據(jù)庫
            Class.forName("com.mysql.cj.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true";
            String username = "root";
            String password = "mypassword";
            Connection connection = DriverManager.getConnection(url, username, password);
            // 創(chuàng)建Statement對象并執(zhí)行SQL查詢
            Statement statement = connection.createStatement();
            String sql = "SELECT id, name FROM users";
            ResultSet resultSet = statement.executeQuery(sql);
            // 處理結(jié)果集
            while (resultSet.next()) {
                int id = resultSet.getInt("id");
                String name = resultSet.getString("name");
                System.out.println("ID: " + id + ", Name: " + name);
            }
            // 關(guān)閉資源
            resultSet.close();
            statement.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

執(zhí)行SQL更新

要使用JDBC執(zhí)行SQL更新(如插入、更新或刪除),可以創(chuàng)建一個(gè)Statement對象,然后調(diào)用其executeUpdate()方法。以下是一個(gè)簡單示例,演示如何向數(shù)據(jù)庫中插入數(shù)據(jù):

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.Statement;
public class JdbcUpdateExample {
    public static void main(String[] args) {
        try {
            // 加載數(shù)據(jù)庫驅(qū)動并連接到數(shù)據(jù)庫
            Class.forName("com.mysql.cj.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true";
            String username = "root";
            String password = "mypassword";
            Connection connection = DriverManager.getConnection(url, username, password);
            // 創(chuàng)建Statement對象并執(zhí)行SQL更新
            Statement statement = connection.createStatement();
            String sql = "INSERT INTO users (name, age) VALUES ('John Doe', 30)";
            int rowsAffected = statement.executeUpdate(sql);
            System.out.println("Rows affected: " + rowsAffected);
            // 關(guān)閉資源
            statement.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
**6. 使用PreparedStatement**
`PreparedStatement`是一個(gè)預(yù)編譯的`Statement`對象,可以提高SQL語句的執(zhí)行效率。它還可以防止SQL注入攻擊。以下是一個(gè)簡單示例,演示如何使用`PreparedStatement`插入數(shù)據(jù):
```java
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class JdbcPreparedStatementExample {
    public static void main(String[] args) {
        try {
            // 加載數(shù)據(jù)庫驅(qū)動并連接到數(shù)據(jù)庫
            Class.forName("com.mysql.cj.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true";
            String username = "root";
            String password = "mypassword";
            Connection connection = DriverManager.getConnection(url, username, password);
            // 創(chuàng)建PreparedStatement對象并執(zhí)行SQL更新
            String sql = "INSERT INTO users (name, age) VALUES (?, ?)";
            PreparedStatement preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setString(1, "Jane Doe");
            preparedStatement.setInt(2, 28);
            int rowsAffected = preparedStatement.executeUpdate();
            System.out.println("Rows affected: " + rowsAffected);
            // 關(guān)閉資源
            preparedStatement.close();
            connection.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

事務(wù)處理

事務(wù)是一組邏輯操作單元,執(zhí)行這些操作要么全部成功,要么全部失敗。在JDBC中,可以使用Connection對象的commit()rollback()方法進(jìn)行事務(wù)處理。以下是一個(gè)簡單示例,演示如何使用事務(wù)處理:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
public class JdbcTransactionExample {
    public static void main(String[] args) {
        Connection connection = null;
        PreparedStatement preparedStatement = null;
        try {
            // 加載數(shù)據(jù)庫驅(qū)動并連接到數(shù)據(jù)庫
            Class.forName("com.mysql.cj.jdbc.Driver");
            String url = "jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true";
            String username = "root";
            String password = "mypassword";
            connection = DriverManager.getConnection(url, username, password);
            // 關(guān)閉自動提交(開啟事務(wù))
            connection.setAutoCommit(false);
            // 執(zhí)行SQL更新
            String sql = "UPDATE users SET age = age + 1 WHERE id = ?";
            preparedStatement = connection.prepareStatement(sql);
            preparedStatement.setInt(1, 1);
            preparedStatement.executeUpdate();
            // 提交事務(wù)
            connection.commit();
            System.out.println("Transaction committed.");
        } catch (Exception e) {
            // 回滾事務(wù)
            try {
                if (connection != null) {
                    connection.rollback();
                    System.out.println("Transaction rolled back.");
                }
            } catch (Exception ex) {
                ex.printStackTrace();
            }
            e.printStackTrace();
        } finally {
            // 關(guān)閉資源
            try {
                if (preparedStatement != null) {
                    preparedStatement.close();
                }
                if (connection != null) {
                    connection.close();
                }
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
    }
}

關(guān)閉資源

在JDBC中,需要確保及時(shí)關(guān)閉資源,如Connection、StatementResultSet等??梢允褂?code>close()方法或者Java 7中引入的try-with-resources語句進(jìn)行資源關(guān)閉。以下是一個(gè)簡單示例,演示如何使用try-with-resources關(guān)閉資源:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
public class JdbcCloseResourceExample {
    public static void main(String[] args) {
        try {
            // 加載數(shù)據(jù)庫驅(qū)動
            Class.forName("com.mysql.cj.jdbc.Driver");
            // 連接到數(shù)據(jù)庫
            String url = "jdbc:mysql://localhost:3306/mydb?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true";
            String username = "root";
            String password = "mypassword";
            try (Connection connection = DriverManager.getConnection(url, username, password);
                 Statement statement = connection.createStatement()) {
                // 執(zhí)行SQL查詢并處理結(jié)果集

以上就是java JDBC主要組件連接數(shù)據(jù)庫及執(zhí)行SQL過程示例全面詳解的詳細(xì)內(nèi)容,更多關(guān)于java JDBC連接數(shù)據(jù)庫的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • 淺談Java中的final關(guān)鍵字與C#中的const, readonly關(guān)鍵字

    淺談Java中的final關(guān)鍵字與C#中的const, readonly關(guān)鍵字

    下面小編就為大家?guī)硪黄獪\談Java中的final關(guān)鍵字與C#中的const, readonly關(guān)鍵字。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2016-10-10
  • java8 stream 如何打印數(shù)據(jù)元素

    java8 stream 如何打印數(shù)據(jù)元素

    這篇文章主要介紹了java8 stream 如何打印數(shù)據(jù)元素,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • java中怎么將多個(gè)音頻文件拼接合成一個(gè)

    java中怎么將多個(gè)音頻文件拼接合成一個(gè)

    在Java中,將多個(gè)音頻文件拼接成一個(gè)通常需要使用一些專門的音頻處理庫,因?yàn)镴ava標(biāo)準(zhǔn)庫并不直接支持音頻文件的合并,一個(gè)常用的庫是JAVE2(Java?Audio?Video?Encoder)或JLayer(用于MP3)結(jié)合JavaFX(如果用于簡單的WAV文件)或其他類似的庫
    2024-06-06
  • SpringBoot3集成Redis的方法詳解

    SpringBoot3集成Redis的方法詳解

    緩存在項(xiàng)目開發(fā)中,基本上是必選組件之一,Redis作為一個(gè)key-value存儲系統(tǒng),具備極高的數(shù)據(jù)讀寫效率,并且支持的數(shù)據(jù)類型比較豐富,下面我們就來看看SpringBoot3是如何集成Redis的吧
    2023-08-08
  • java實(shí)現(xiàn)時(shí)間與字符串之間轉(zhuǎn)換

    java實(shí)現(xiàn)時(shí)間與字符串之間轉(zhuǎn)換

    這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)時(shí)間與字符串之間轉(zhuǎn)換,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • Spring注解驅(qū)動開發(fā)實(shí)現(xiàn)屬性賦值

    Spring注解驅(qū)動開發(fā)實(shí)現(xiàn)屬性賦值

    這篇文章主要介紹了Spring注解驅(qū)動開發(fā)實(shí)現(xiàn)屬性賦值,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • SpringBoot實(shí)現(xiàn)動態(tài)控制定時(shí)任務(wù)支持多參數(shù)功能

    SpringBoot實(shí)現(xiàn)動態(tài)控制定時(shí)任務(wù)支持多參數(shù)功能

    這篇文章主要介紹了SpringBoot實(shí)現(xiàn)動態(tài)控制定時(shí)任務(wù)-支持多參數(shù)功能,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05
  • 關(guān)于Jackson的JSON工具類封裝 JsonUtils用法

    關(guān)于Jackson的JSON工具類封裝 JsonUtils用法

    這篇文章主要介紹了關(guān)于Jackson的JSON工具類封裝 JsonUtils用法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • java中如何判斷對象是否是垃圾

    java中如何判斷對象是否是垃圾

    這篇文章主要介紹了java中如何判斷對象是否是垃圾,Java有兩種算法判斷對象是否是垃圾:引用計(jì)數(shù)算法和可達(dá)性分析算法,需要的朋友可以參考下
    2023-04-04
  • SpringBoot實(shí)現(xiàn)登錄攔截器的方法詳解

    SpringBoot實(shí)現(xiàn)登錄攔截器的方法詳解

    其實(shí)spring?boot攔截器的配置方式和springMVC差不多,只有一些小的改變需要注意下就ok了。本文主要給大家介紹了關(guān)于如何在Springboot實(shí)現(xiàn)登陸攔截器功能,需要的朋友可以參考下
    2022-07-07

最新評論