JDBC連線資料庫

_Aking發表於2021-08-13

JDBC連線資料庫(一步步來)

需要:

idea或者eclipse等可以編譯java的

MySQL(這裡為8.0版本)

jdbc的jar包(同需要8.0的版本)

MySQL官方下載

下載的時候選擇那個體積大的是客戶端的,那個體積小的是web的,都是32位,不用找64位了,沒有64的

jdbc的jar包官方下載

1、點選Select Operating System:下的選項

2、選擇platform Independent

3、第一個是tar.gz的壓縮包,第二個zip的壓縮包,一般下第二個

下載完以後解壓縮,點進去找到mysql-connector-java-8.0.25.jar就行了

這個就是我們需要用到的jar包

準備環境

開啟idea,新建一個專案jdbc,在專案的當前目錄下建立一個lib的目錄

將我們上面講到的jar包單個檔案(不要複製整個資料夾)

複製貼上到lib目錄下,右鍵lib目錄

點選,然後直接確定,我這裡是漢化過的,如果是英文的,找一下對應的就行
這時你的jar包在lib目錄應該是這樣的

那麼就代表新增jar包成功了,就可以使用了

基本應用

前提是已經掌握了基本的資料庫中表的增刪改查,不掌握也問題不大,下面會解釋
先建一個資料庫,這裡我直接拿狂神說的mysql中一個資料庫

 # 建立一個名為jdbc資料庫,編碼用utf-8
CREATE DATABASE jdbcstudy CHARACTER SET utf8 COLLATE utf8_general_ci;

USE jdbcstudy;
# 在這個資料庫中建立一個名為users的表,裡面有5個資料id、NAME 、PASSWORD 、email 、birthday 
CREATE TABLE `users`(
	id INT PRIMARY KEY,#primary key表示這個是主鍵
	`NAME` VARCHAR(40),
	`PASSWORD` VARCHAR(40),
	email VARCHAR(60),
	birthday datetime
);
# 為表新增一些資訊
INSERT INTO `users`(id,`NAME`,`PASSWORD`,email,birthday)
VALUES(1,'zhansan','123456','zs@sina.com','1980-12-04'),
(2,'lisi','123456','lisi@sina.com','1981-12-04'),
(3,'wangwu','123456','wangwu@sina.com','1979-12-04');

這樣我們就建好一個表了,然後到idea中
在src中新建目錄和java專案,先填寫一下基本的結構,然後一個一個講

package com.ou.lesson01;

import com.mysql.cj.protocol.Resultset;

import java.sql.*;

//我的第一個JDBC程式
public class jdbcFirstDemo {
    public static void main(String[] args) {
        // 1、載入驅動
        Connection connection = null;
        Statement statement = null;
        ResultSet resultSet = null;
        try {
            Class.forName("com.mysql.cj.jdbc.Driver");//載入驅動、8.0寫法,如果是5.0就不用寫cj

            // 2、使用者資訊和url
            String url = "jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&usrSSl=true";
            String username = "root";
            String password = "root";

            // 3、連線成功,資料庫物件
            connection = DriverManager.getConnection(url, username, password);

            // 4、執行SQL物件
            statement = connection.createStatement();

            // 5、執行SQL,可能存在加過,檢視返回結果
            String sql = "select * from users;";
            resultSet = statement.executeQuery(sql);
            while(resultSet.next()){
                System.out.println("id = " + resultSet.getInt("id"));
                System.out.println("name = " + resultSet.getString("NAME"));
                System.out.println("pwd = " + resultSet.getObject("PASSWORD"));
                System.out.println("email = " + resultSet.getObject("email"));
                System.out.println("birth = " + resultSet.getObject("birthday"));
            }
        } catch (ClassNotFoundException | SQLException e) {
            e.printStackTrace();
        } finally {
            // 6、釋放連線
            try {
                assert connection != null;
                assert statement != null;
                assert resultSet != null;
                connection.close();
                statement.close();
                resultSet.close();
            } catch (SQLException throwables) {
                throwables.printStackTrace();
            }
        }
    }
}

jdbc中三個常用類

  • 前言

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

String url = "jdbc:mysql://localhost:3306/jdbcstudy?useUnicode=true&characterEncoding=utf8&usrSSl=true";
這相當於一些資訊,如果你用的Oracle的話,就不是這樣寫,這裡只針對MySQL,首先jdbc:mysql://宣告一下,然後跟自己主機端號localhost:3306,其中MySQL對應的是3306,之後再跟jdbcstudy資料庫名稱,你的是什麼就填什麼
寫到這裡其實已經結束了,為了準確性和穩定性,一般再用?隔開加上三個屬性,之間用&隔開useUnicode=true&characterEncoding=utf8&usrSSl=true
其中useUnicode=true表示是否使用Unicode字符集,true就是使用,characterEncoding=utf8表示使用utf8編碼,usrSSl=true可以使我們減少一些不必要的錯誤,一般情況我們也會加上serverTimezone=UTC是指定時區時間為世界統一時間
String username = "root";
String password = "root";
這兩個比較容易理解,就是我們資料庫最初的賬號和密碼,我最開始設定的root

由於資料庫的連線可能失敗,所以我先把三個類的物件放在了外面初始化,並用try catch環繞了其他程式碼

Connection connection = null;
Statement statement = null;
ResultSet resultSet = null;

Connection

connection其實就相當於一個資料庫物件,我們通過connection = DriverManager.getConnection(url, username, password);來把我們的資料庫資訊、賬號和密碼傳入,然後通過DriverManager的getConnection方法連線到資料庫

Statement

連線到了資料庫,我們需要有一個SQL物件,也就是Statement這個類,通過statement = connection.createStatement();來通過資料庫,得到我們的statement物件,然後就可以通過對這個物件的execute方法來進行操作了

execute稍微提一下這個方法,它有很多種實現方式,比如executeQuery、executeUpdate都是字面意思,一個對應查詢,一個對應更新,更新的話就是增刪那些,execute是通用的

那麼如果操作呢,只要先把sql語句寫好,然後放入就可以了,當然直接在方法裡面寫也是可以的

ResultSet

操作也做了,那值呢,這就需要一個ResultSet類來接收了,resultSet = statement.executeQuery(sql);,這樣resultSet就拿到了這個值

resultSet其實是一個指向其當前資料行的指標,為了得到我們的結果,我們要用一個方法叫next(),通過while就可以一行一行的遍歷了

當然,上面只是遍歷了,對於每一行的值,我們只要get方法就行了,對於int我們有getInt方法,對於字串我們有getString,還有通用的getObject

通過將我們要查詢的這一行的那個元素的名稱傳入,就可以查到這一行的資料了

System.out.println("id = " + resultSet.getInt("id"));

最後別忘了關閉資源

歡迎評論區討論問題啊

相關文章