准備好以下:
知識:
- java基礎
- mysql 基礎
- idea 軟件基礎
(狗頭保命)
MYSQL8.0+:
本文章使用的是mysql8.0.16進行教程
- 官網下載:https://dev.mysql.com/downloads/installer/——官網下載太慢了,下載后是msi文件,需要安裝。
- 騰訊軟件下載:https://pc.qq.com/detail/3/detail_1303.html ——我是在這下的最新mysql,親測可用,下載后是msi文件,需要安裝
- MYSQL8.0.16安裝,以及配置 教程:MYSQL 【基礎】mysql從安裝到使用
mysql-connector-java的jar包:
- maven添加jar包依賴:
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>8.0.16</version>
</dependency>
- 手動下載,添加jar包:https://static.runoob.com/download/mysql-connector-java-8.0.16.jar
- 不會使用maven,或者添加jar包的,參考這篇文章:JAVA【基礎】 IDEA導入jar包的幾種方式
配置:
一 開啟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();
}
}
}
}
運行結果
以上就是本文內容,以后遇到更多知識將會補充。