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;
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"));
最后別忘了關閉資源
歡迎評論區討論問題啊