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

java db數據庫連接與操作功能

 更新時間:2025年09月11日 16:22:46   作者:NurDroid  
Java DB是一個基于Apache Derby的關系數據庫管理系統(tǒng)(RDBMS),它完全用Java編寫,支持標準的SQL語法,Java DB是Java開發(fā)者常用的數據庫工具之一,本文給大家介紹java db數據庫連接與操作功能,感興趣的朋友跟隨小編一起看看吧

Java DB 是一個基于 Apache Derby 的關系數據庫管理系統(tǒng)(RDBMS),它完全用 Java 編寫,支持標準的 SQL 語法。Java DB 是 Java 開發(fā)者常用的數據庫工具之一,尤其適合嵌入式應用開發(fā)。

1. Java DB 的核心概念

  • 數據庫(Database) :是存儲數據的容器,它以表的形式組織數據。在 Java DB 中,一個數據庫可以包含多個表,每個表存儲特定類型的數據。例如,一個電商數據庫可能包含用戶表(存儲用戶信息)、訂單表(存儲訂單信息)和商品表(存儲商品信息)。
  • 表(Table) :是數據庫中存儲數據的基本單位,由行和列組成。每一列都有一個名稱和數據類型,用于定義該列可以存儲的數據種類。例如,一個用戶表可能有以下結構:CREATE TABLE users (id INT PRIMARY KEY, name VARCHAR(50), email VARCHAR(100)) 。其中,id 是主鍵,nameemail 是普通列。
  • 行(Row) :是表中的一個記錄,表示一組相關數據。例如,在用戶表中,一行可能表示一個用戶的信息,如 INSERT INTO users VALUES (1, 'Alice', 'alice@example.com') 。
  • 列(Column) :是表中的一個字段,用于存儲某種類型的數據。例如,name 列用于存儲用戶的名字,email 列用于存儲用戶的電子郵件地址。
  • 主鍵(Primary Key) :是表中用于唯一標識一行的列或列組合。主鍵的值必須是唯一的,且不能為 NULL 。例如,在用戶表中,id 列被定義為主鍵,確保每個用戶都有一個唯一的標識。
  • 外鍵(Foreign Key) :是表中的一個列或列組合,用于建立表與表之間的關系。外鍵的值必須是另一個表的主鍵值或 NULL 。例如,在訂單表中,可以有一個 user_id 列作為外鍵,指向用戶表的 id 列,表示訂單屬于哪個用戶。

2. Java DB 的連接與操作

2.1 連接數據庫

在 Java 中,使用 Java DB 時需要通過 JDBC(Java Database Connectivity)來連接數據庫。以下是一個連接 Java DB 數據庫的示例代碼:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class JavaDBConnection {
    public static void main(String[] args) {
        String url = "jdbc:derby://localhost:1527/myDatabase;create=true"; // 數據庫 URL
        String username = "root"; // 數據庫用戶名
        String password = "password"; // 數據庫密碼
        try (Connection conn = DriverManager.getConnection(url, username, password)) {
            System.out.println("Connected to the database successfully.");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

在這個示例中:

  • 數據庫 URL 是 jdbc:derby://localhost:1527/myDatabase;create=true 。其中,jdbc:derby 是 Java DB 的 JDBC 協(xié)議,localhost 是數據庫服務器的地址,1527 是默認的 Java DB 服務端口,myDatabase 是數據庫名稱,create=true 表示如果數據庫不存在則創(chuàng)建它。
  • 使用 DriverManager.getConnection() 方法建立連接,傳入數據庫 URL、用戶名和密碼。

2.2 創(chuàng)建表

創(chuàng)建表是數據庫操作的基礎。以下是一個創(chuàng)建表的示例代碼:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class CreateTable {
    public static void main(String[] args) {
        String url = "jdbc:derby://localhost:1527/myDatabase;create=true";
        String username = "root";
        String password = "password";
        try (Connection conn = DriverManager.getConnection(url, username, password);
             Statement stmt = conn.createStatement()) {
            String sql = "CREATE TABLE users (" +
                    "id INT PRIMARY KEY," +
                    "name VARCHAR(50)," +
                    "email VARCHAR(100)" +
                    ")";
            stmt.executeUpdate(sql);
            System.out.println("Table created successfully.");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

在這個示例中:

  • 使用 Statement 對象執(zhí)行 SQL 語句。CREATE TABLE 語句用于創(chuàng)建一個名為 users 的表,其中包含 id 、nameemail 三個列。
  • stmt.executeUpdate(sql) 方法用于執(zhí)行 SQL 語句,創(chuàng)建表。

2.3 插入數據

插入數據是將數據添加到表中的操作。以下是一個插入數據的示例代碼:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class InsertData {
    public static void main(String[] args) {
        String url = "jdbc:derby://localhost:1527/myDatabase;create=true";
        String username = "root";
        String password = "password";
        try (Connection conn = DriverManager.getConnection(url, username, password)) {
            String sql = "INSERT INTO users (id, name, email) VALUES (?, ?, ?)";
            try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
                pstmt.setInt(1, 1);
                pstmt.setString(2, "Alice");
                pstmt.setString(3, "alice@example.com");
                int rowsAffected = pstmt.executeUpdate();
                System.out.println(rowsAffected + " row(s) inserted.");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

在這個示例中:

  • 使用 PreparedStatement 對象來執(zhí)行 SQL 插入語句。PreparedStatement 是一種預編譯的 SQL 語句,可以提高性能并防止 SQL 注入攻擊。
  • 使用 pstmt.setInt() 、pstmt.setString() 等方法設置 SQL 語句中的參數值。
  • pstmt.executeUpdate() 方法用于執(zhí)行 SQL 插入語句,返回受影響的行數。

2.4 查詢數據

查詢數據是從表中檢索數據的操作。以下是一個查詢數據的示例代碼:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class QueryData {
    public static void main(String[] args) {
        String url = "jdbc:derby://localhost:1527/myDatabase;create=true";
        String username = "root";
        String password = "password";
        try (Connection conn = DriverManager.getConnection(url, username, password)) {
            String sql = "SELECT * FROM users";
            try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
                ResultSet rs = pstmt.executeQuery();
                while (rs.next()) {
                    int id = rs.getInt("id");
                    String name = rs.getString("name");
                    String email = rs.getString("email");
                    System.out.println("ID: " + id + ", Name: " + name + ", Email: " + email);
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

在這個示例中:

  • 使用 PreparedStatement 對象執(zhí)行 SQL 查詢語句。
  • pstmt.executeQuery() 方法用于執(zhí)行 SQL 查詢語句,返回一個 ResultSet 對象。
  • 使用 ResultSet 對象的 next() 方法遍歷查詢結果,rs.getInt()rs.getString() 等方法獲取每一列的值。

2.5 更新數據

更新數據是修改表中已存在數據的操作。以下是一個更新數據的示例代碼:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class UpdateData {
    public static void main(String[] args) {
        String url = "jdbc:derby://localhost:1527/myDatabase;create=true";
        String username = "root";
        String password = "password";
        try (Connection conn = DriverManager.getConnection(url, username, password)) {
            String sql = "UPDATE users SET email = ? WHERE id = ?";
            try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
                pstmt.setString(1, "alice_new@example.com");
                pstmt.setInt(2, 1);
                int rowsAffected = pstmt.executeUpdate();
                System.out.println(rowsAffected + " row(s) updated.");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

在這個示例中:

  • 使用 PreparedStatement 對象執(zhí)行 SQL 更新語句。
  • 使用 pstmt.setString() 、pstmt.setInt() 等方法設置 SQL 語句中的參數值。
  • pstmt.executeUpdate() 方法用于執(zhí)行 SQL 更新語句,返回受影響的行數。

2.6 刪除數據

刪除數據是從表中移除數據的操作。以下是一個刪除數據的示例代碼:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class DeleteData {
    public static void main(String[] args) {
        String url = "jdbc:derby://localhost:1527/myDatabase;create=true";
        String username = "root";
        String password = "password";
        try (Connection conn = DriverManager.getConnection(url, username, password)) {
            String sql = "DELETE FROM users WHERE id = ?";
            try (PreparedStatement pstmt = conn.prepareStatement(sql)) {
                pstmt.setInt(1, 1); // 假設刪除 id 為 1 的用戶
                int rowsAffected = pstmt.executeUpdate();
                System.out.println(rowsAffected + " row(s) deleted.");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

在這個示例中:

  • 使用 PreparedStatement 對象執(zhí)行 SQL 刪除語句。
  • 使用 pstmt.setInt(1, 1) 設置 SQL 語句中的參數值,表示刪除 id1 的用戶。
  • pstmt.executeUpdate() 方法用于執(zhí)行 SQL 刪除語句,返回受影響的行數。

3. Java DB 的其他功能

3.1 索引(Index)

索引是一種特殊的數據庫對象,用于提高查詢性能。在 Java DB 中,可以通過 SQL 語句創(chuàng)建索引。以下是一個創(chuàng)建索引的示例代碼:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class CreateIndex {
    public static void main(String[] args) {
        String url = "jdbc:derby://localhost:1527/myDatabase;create=true";
        String username = "root";
        String password = "password";
        try (Connection conn = DriverManager.getConnection(url, username, password);
             Statement stmt = conn.createStatement()) {
            String sql = "CREATE INDEX idx_name ON users (name)";
            stmt.executeUpdate(sql);
            System.out.println("Index created successfully.");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

在這個示例中:

  • 使用 CREATE INDEX 語句創(chuàng)建了一個名為 idx_name 的索引,該索引基于 users 表的 name 列。
  • 索引可以幫助數據庫更快地查找 name 列中的數據,從而提高查詢性能。

3.2 視圖(View)

視圖是一種虛擬表,其內容由 SQL 查詢定義。視圖可以簡化復雜的 SQL 操作,隱藏數據的復雜性。以下是一個創(chuàng)建視圖的示例代碼:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class CreateView {
    public static void main(String[] args) {
        String url = "jdbc:derby://localhost:1527/myDatabase;create=true";
        String username = "root";
        String password = "password";
        try (Connection conn = DriverManager.getConnection(url, username, password);
             Statement stmt = conn.createStatement()) {
            String sql = "CREATE VIEW user_summary AS SELECT id, name FROM users";
            stmt.executeUpdate(sql);
            System.out.println("View created successfully.");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

在這個示例中:

  • 使用 CREATE VIEW 語句創(chuàng)建了一個名為 user_summary 的視圖,該視圖只包含 users 表的 idname 列。
  • 查詢視圖時,可以像查詢普通表一樣查詢視圖。

3.3 存儲過程(Stored Procedure)

存儲過程是一組預編譯的 SQL 語句,可以提高數據庫操作的效率和安全性。以下是一個創(chuàng)建存儲過程的示例代碼:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class CreateProcedure {
    public static void main(String[] args) {
        String url = "jdbc:derby://localhost:1527/myDatabase;create=true";
        String username = "root";
        String password = "password";
        try (Connection conn = DriverManager.getConnection(url, username, password);
             Statement stmt = conn.createStatement()) {
            String sql = "CREATE PROCEDURE insert_user (IN p_id INT, IN p_name VARCHAR(50), IN p_email VARCHAR(100)) " +
                    "LANGUAGE SQL " +
                    "BEGIN " +
                    "INSERT INTO users (id, name, email) VALUES (p_id, p_name, p_email); " +
                    "END";
            stmt.executeUpdate(sql);
            System.out.println("Stored procedure created successfully.");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

在這個示例中:

  • 使用 CREATE PROCEDURE 語句創(chuàng)建了一個名為 insert_user 的存儲過程,該存儲過程接受三個參數:p_id 、p_namep_email
  • 存儲過程內部執(zhí)行了一個 INSERT 語句,將傳入的參數插入到 users 表中。

3.4 調用存儲過程

創(chuàng)建存儲過程后,可以通過 JDBC 調用它。以下是一個調用存儲過程的示例代碼:

import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class CallProcedure {
    public static void main(String[] args) {
        String url = "jdbc:derby://localhost:1527/myDatabase;create=true";
        String username = "root";
        String password = "password";
        try (Connection conn = DriverManager.getConnection(url, username, password)) {
            String sql = "{CALL insert_user(?, ?, ?)}";
            try (CallableStatement cstmt = conn.prepareCall(sql)) {
                cstmt.setInt(1, 2);
                cstmt.setString(2, "Bob");
                cstmt.setString(3, "bob@example.com");
                cstmt.execute();
                System.out.println("User inserted using stored procedure.");
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

在這個示例中:

  • 使用 CallableStatement 對象調用存儲過程。
  • 使用 cstmt.setInt() 、cstmt.setString() 等方法設置存儲過程的參數值。
  • cstmt.execute() 方法用于執(zhí)行存儲過程。

3.5 事務(Transaction)

事務是一組操作的集合,這些操作要么全部成功,要么全部失敗。在 Java DB 中,可以通過 JDBC 控制事務。以下是一個使用事務的示例代碼:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
public class TransactionExample {
    public static void main(String[] args) {
        String url = "jdbc:derby://localhost:1527/myDatabase;create=true";
        String username = "root";
        String password = "password";
        try (Connection conn = DriverManager.getConnection(url, username, password)) {
            conn.setAutoCommit(false); // 禁用自動提交
            String sql1 = "INSERT INTO users (id, name, email) VALUES (?, ?, ?)";
            String sql2 = "UPDATE users SET email = ? WHERE id = ?";
            try (PreparedStatement pstmt1 = conn.prepareStatement(sql1);
                 PreparedStatement pstmt2 = conn.prepareStatement(sql2)) {
                pstmt1.setInt(1, 3);
                pstmt1.setString(2, "Charlie");
                pstmt1.setString(3, "charlie@example.com");
                pstmt1.executeUpdate();
                pstmt2.setString(1, "charlie_new@example.com");
                pstmt2.setInt(2, 3);
                pstmt2.executeUpdate();
                conn.commit(); // 提交事務
                System.out.println("Transaction committed successfully.");
            } catch (SQLException e) {
                conn.rollback(); // 回滾事務
                System.out.println("Transaction rolled back.");
                e.printStackTrace();
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

在這個示例中:

  • 使用 conn.setAutoCommit(false) 禁用自動提交,手動控制事務。
  • 執(zhí)行兩條 SQL 語句:插入一個用戶和更新該用戶的電子郵件地址。
  • 如果兩條語句都成功執(zhí)行,則調用 conn.commit() 提交事務;如果發(fā)生異常,則調用 conn.rollback() 回滾事務。

4. Java DB 的一些高級功能

4.1 數據庫觸發(fā)器(Trigger)

觸發(fā)器是一種特殊的存儲過程,它在特定的數據庫事件(如插入、更新或刪除操作)發(fā)生時自動執(zhí)行。以下是一個創(chuàng)建觸發(fā)器的示例代碼:

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
public class CreateTrigger {
    public static void main(String[] args) {
        String url = "jdbc:derby://localhost:1527/myDatabase;create=true";
        String username = "root";
        String password = "password";
        try (Connection conn = DriverManager.getConnection(url, username, password);
             Statement stmt = conn.createStatement()) {
            String sql = "CREATE TRIGGER update_email_trigger " +
                    "AFTER UPDATE OF email ON users " +
                    "FOR EACH ROW " +
                    "BEGIN " +
                    "CALL update_email_log(OLD.email, NEW.email); " +
                    "END";
            stmt.executeUpdate(sql);
            System.out.println("Trigger created successfully.");
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

在這個示例中:

  • 使用 CREATE TRIGGER 語句創(chuàng)建了一個名為 update_email_trigger 的觸發(fā)器。
  • 該觸發(fā)器在 users 表的 email 列發(fā)生更新操作時觸發(fā)。
  • 觸發(fā)器內部調用了一個名為 update_email_log 的存儲過程,將舊的電子郵件地址和新的電子郵件地址作為參數傳遞。

4.2 數據庫連接池(Connection Pool)

數據庫連接池是一種資源管理技術,用于提高數據庫連接的性能和可伸縮性。在 Java 中,可以使用第三方庫(如 Apache DBCP 或 HikariCP)來實現數據庫連接池。以下是一個使用 Apache DBCP 的示例代碼:

import org.apache.commons.dbcp2.BasicDataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class ConnectionPoolExample {
    public static void main(String[] args) {
        BasicDataSource dataSource = new BasicDataSource();
        dataSource.setDriverClassName("org.apache.derby.jdbc.ClientDriver");
        dataSource.setUrl("jdbc:derby://localhost:1527/myDatabase");
        dataSource.setUsername("root");
        dataSource.setPassword("password");
        try (Connection conn = dataSource.getConnection()) {
            String sql = "SELECT * FROM users";
            try (PreparedStatement pstmt = conn.prepareStatement(sql);
                 ResultSet rs = pstmt.executeQuery()) {
                while (rs.next()) {
                    int id = rs.getInt("id");
                    String name = rs.getString("name");
                    String email = rs.getString("email");
                    System.out.println("ID: " + id + ", Name: " + name + ", Email: " + email);
                }
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    }
}

在這個示例中:

  • 使用 BasicDataSource 創(chuàng)建了一個數據庫連接池。
  • 設置了數據庫驅動程序類名、數據庫 URL、用戶名和密碼。
  • 從連接池中獲取連接,執(zhí)行 SQL 查詢語句。

5. Java DB 的一些實用工具

5.1 ij 工具

ij 是 Java DB 自帶的一個命令行工具,用于執(zhí)行 SQL 語句。以下是使用 ij 工具的一些示例:

  • 啟動 ij 工具:
ij
  • 連接到數據庫:
CONNECT 'jdbc:derby://localhost:1527/myDatabase;user=root;password=password';
  • 執(zhí)行 SQL 查詢語句:
SELECT * FROM users;
  • 退出 ij 工具:
EXIT;

5.2 網絡服務器模式

Java DB 支持網絡服務器模式,允許遠程客戶端連接到數據庫。以下是啟動 Java DB 網絡服務器的示例代碼:

java -jar derbyrun.jar server start

在啟動網絡服務器后,可以使用 JDBC 連接到數據庫,如前面的示例代碼所示。

6. Java DB 的一些注意事項

  • 數據庫性能優(yōu)化 :在使用 Java DB 時,需要注意數據庫性能優(yōu)化。例如,合理使用索引、避免全表掃描、優(yōu)化 SQL 查詢語句等。
  • 數據備份與恢復 :定期備份數據庫是防止數據丟失的重要措施。Java DB 提供了備份和恢復數據庫的功能,可以通過 SQL 語句或工具進行備份和恢復。
  • 安全性 :在使用 Java DB 時,需要注意安全性。例如,使用強密碼、限制數據庫訪問權限、防止 SQL 注入攻擊等。

到此這篇關于java db數據庫連接與操作功能的文章就介紹到這了,更多相關java db連接內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • Java8中方法引用的使用詳解

    Java8中方法引用的使用詳解

    這篇文章主要介紹了Java 8 中的方法引用使用,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • java實現簡單的搜索引擎

    java實現簡單的搜索引擎

    這篇文章主要為大家詳細介紹了java實現簡單的搜索引擎的相關資料,需要的朋友可以參考下
    2016-02-02
  • Java編程redisson實現分布式鎖代碼示例

    Java編程redisson實現分布式鎖代碼示例

    這篇文章主要介紹了Java編程redisson實現分布式鎖代碼示例,小編覺得還是比較不錯的,這里給大家分享下,供需要的朋友參考。
    2017-10-10
  • Java之SSM中bean相關知識匯總案例講解

    Java之SSM中bean相關知識匯總案例講解

    這篇文章主要介紹了Java之SSM中bean相關知識匯總案例講解,本篇文章通過簡要的案例,講解了該項技術的了解與使用,以下就是詳細內容,需要的朋友可以參考下
    2021-07-07
  • SpringBoot采用AJAX實現異步發(fā)布帖子詳解

    SpringBoot采用AJAX實現異步發(fā)布帖子詳解

    Ajax是一種web應用技術,可以借助客戶端腳本(javascript)與服務端應用進行異步通訊,獲取服務端數據以后,可以進行局部刷新,進而提高數據的響應和渲染速度。所有的Ajax請求都會基于DOM(HTML元素)事件,通過XHR(XMLHttpRequest)對象實現與服務端異步通訊局部更新
    2022-08-08
  • Java基礎面試題之volatile詳解

    Java基礎面試題之volatile詳解

    Volatile可以看做是輕量級的 Synchronized,它只保證了共享變量的可見性,下面這篇文章主要給大家介紹了關于Java基礎面試題之volatile的相關資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下
    2022-06-06
  • nacos服務注冊命名空間指定方式

    nacos服務注冊命名空間指定方式

    文章介紹了Nacos服務注冊命名空間的用途,以及如何創(chuàng)建和指定命名空間,命名空間用于隔離不同項目的服務和配置,避免沖突,通過在配置文件中指定命名空間ID,服務會注冊到相應的命名空間中,這樣可以更好地管理不同環(huán)境下的配置文件
    2024-12-12
  • Java在PDF中替換文字詳解及可能遇到的問題

    Java在PDF中替換文字詳解及可能遇到的問題

    本文詳細介紹了如何使用Java和Spire.PDF?for?Java庫在PDF文檔中批量替換文字,包括替換特定文字的所有實例、第一個實例以及使用正則表達式,同時,探討了可能遇到的問題及其解決方案,需要的朋友可以參考下
    2024-09-09
  • Java String保存字符串的機制

    Java String保存字符串的機制

    Java中字符串以什么格式來存儲?Java 中的 Unicode 字符串會按照 Latin1或者 UTF16 的編碼格式保存在 String 中,本文就詳細的介紹了一下,感興趣的可以了解一下
    2021-05-05
  • idea2020.1最新版永久破解/pycharm也可用(步驟詳解)

    idea2020.1最新版永久破解/pycharm也可用(步驟詳解)

    這篇文章主要介紹了idea2020.1最新版永久破解/pycharm也可用,本文給大家分享簡單實現步驟,通過圖文并茂的形式給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04

最新評論