JDBC連接數據庫


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;
                resultSet.close();
                statement.close();
                connection.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"));

最后別忘了關閉資源

歡迎評論區討論問題啊


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM