JAVA【基礎】jdbc 連接 MYSQL 8.0+ 從安裝到使用——搭建開發環境

準備好以下:

知識:

  • java基礎
  • mysql 基礎
  • idea 軟件基礎
    (狗頭保命)

MYSQL8.0+:

本文章使用的是mysql8.0.16進行教程

mysql-connector-java的jar包:

  • maven添加jar包依賴:
        <dependency>
            <groupId>mysql</groupId>
            <artifactId>mysql-connector-java</artifactId>
            <version>8.0.16</version>
        </dependency>

配置:

一 開啓mysql服務

win10左下角,輸入 cmd 先別急着回車!,等待搜索到命令提示符後,右鍵,以管理員身份運行。

在這裏插入圖片描述
輸入 net start mysql80 開啓mysql服務 ,mysql80是安裝的時候,設置的服務名。
輸入 net stop mysql80 關閉mysql服務 。
如下圖所示:
在這裏插入圖片描述
如果不使用管理員身份開啓,會造成以下錯誤。

在這裏插入圖片描述
開啓mysql服務後就可以關閉cmd框,然後開始寫代碼了。

二 連接代碼參數設置

  • MYSQL8.0+使用jbdc的連接,與以往版本的不同
連接 MYSQL8.0+
forname Class.forName(com.mysql.cj.jdbc.Driver
URL設置時區 serverTimezone=UTC
  • 上面2個參數不設置好會報ClassNotFoundException的異常
  • 通常情況下連接url設置成這樣即可
  • jdbc:mysql://localhost:3306/mysqlname?useSSL=false&serverTimezone=UTC
url參數 說明
localhost localhost是本機地址127.0.0.1
:3306 端口名,是mysql開啓的服務,如果上述(配置一)的mysql服務未開啓,會報com.mysql.cj.jdbc.exceptions.CommunicationsException: Communications link failure 的異常
mysqlname 數據庫的名字,如果沒有此數據庫會報SQLSyntaxErrorException: Unknown database 'xxx',的異常
useSSL=false 在web領域要用到,指是否開啓ssl安全連接,但MySQL 8.0 以上版本不需要建立 SSL 連接,需要關閉。
serverTimezone=UTC 設置時區,不設置會報錯

實戰:

這裏博主提前準備好了一個數據庫,名字是skeleton,裏面有一張user表
結構
在這裏插入圖片描述

會用到的方法 說明
Class.forName() 返回一個類,作用是要求JVM查找並加載指定的類,也就是說JVM會執行該類的靜態代碼段。
DriverManager.getConnection(url, user, pwd) 返回Connection對象,用於連接數據庫
connection.createStatement() 返回Statement對象,用於查詢數據庫操作
statement.executeQuery(str) 執行查詢語句
statement.execute(str) 執行語句,與上面不同的是,update,insert,delete等創建刪除型語句,必須用這個函數執行,不然會拋以下異常:java.sql.SQLException: Can not issue data manipulation statements with executeQuery().
resultSet.next() 讀取下一行數據
resultSet.getString(key) 獲取查詢到的數據中,key字段的值
import java.sql.*;//導包
//新建一個測試類
public class MyJDBC {

    String mysqlname="skeleton";//數據庫名
    String user = "root";//使用管理員賬號啓動
    String pwd = "skeletonmysql";//數據庫密碼
    String URL = "jdbc:mysql://localhost:3306/"+mysqlname+"?useSSL=false&serverTimezone=UTC";
    String DRIVER = "com.mysql.cj.jdbc.Driver";


    public static void main(String[] args) {
        MyJDBC myJDBC = new MyJDBC();
        myJDBC.connect();
    }

    public void connect() {
        Connection connection = null;
        Statement statement = null;
        try {
            //啓動JDBC驅動
            Class.forName(DRIVER);
            //鏈接數據庫
            connection = DriverManager.getConnection(URL, user, pwd);
            //查詢數據
            statement = connection.createStatement();
            //mysql語句
            String query = "SELECT * FROM User;";
            //查詢數據
            ResultSet resultSet = statement.executeQuery(query);
            //展開結果集數據庫
            while (resultSet.next()) {
                // 通過字段檢索
                String user = resultSet.getString("user");
                int pwd = resultSet.getInt("pwd");
                int times = resultSet.getInt("times");
                // 輸出數據
                System.out.println("user: " + user);
                System.out.println("pwd: " + pwd);
                System.out.println("times: " + times);
            }
            // 完成後關閉
            resultSet.close();
            statement.close();
            connection.close();
            //下面是異常處理
        } catch (SQLException | ClassNotFoundException e) {
            e.printStackTrace();
        } finally {
            try {
                if (statement != null)statement.close();
                if(connection!=null)connection.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }
}

運行結果
在這裏插入圖片描述


以上就是本文內容,以後遇到更多知識將會補充。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章