JDBC連線資料庫(一步步來)
需要:
idea或者eclipse等可以編譯java的
MySQL(這裡為8.0版本)
jdbc的jar包(同需要8.0的版本)
下載的時候選擇那個體積大的是客戶端的,那個體積小的是web的,都是32位,不用找64位了,沒有64的
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"));
最後別忘了關閉資源
歡迎評論區討論問題啊