Java鏈接MySQL數據庫

主要摘自html

https://www.cnblogs.com/town123/p/8336244.htmljava

https://www.runoob.com/java/java-mysql-connect.htmlmysql

 

工具:eclipse、MySQL、MySQL鏈接驅動:mysql-connector-java-5.1.45.jarweb

首先要下載Connector/J地址:http://www.mysql.com/downloads/connector/j/sql

這是MySQL官方提供的鏈接方式(即MySQL鏈接驅動),解壓後獲得jar庫文件,須要在工程中導入該庫文件。數據庫

這是解壓後的文件:eclipse

一、新建java項目 而後新建一個文件夾——libs(用來放各類外部包)

右鍵工程名(個人是sqldemo1)—新建New—文件夾Folder—Folder name爲libs—Finish。工具

二、在包裏面加入鏈接mysql數據庫的包

即剛纔解壓後獲得的 mysql-connector-java-5.1.45-bin.jar測試

而後複製粘貼到咱們java項目的libs文件夾下面(注意是物理地址裏);ui

此時,在eclipse中—右擊libs文件夾—刷新Refresh,就將下載好的JDBC放到該文件夾下,以下圖所示:

 

三、構建路徑上的jar包

在eclipse中

a:點擊項目Project——選擇屬性Propeties

b:進行添加

打開屬性Propeties後,點擊java構建路徑(Java Build Path)
點擊添加jar(Add JARs...),選擇你的項目下的jar包,而後肯定,最後添加完成

 

四、在java項目中進行mysql數據庫的鏈接

建立測試數據

接下來咱們在 MySQL 中建立 test 數據庫,並建立 websites 數據表,表結構以下:

CREATE TABLE `websites` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `name` char(20) NOT NULL DEFAULT '' COMMENT '站點名稱',
  `url` varchar(255) NOT NULL DEFAULT '',
  `alexa` int(11) NOT NULL DEFAULT '0' COMMENT 'Alexa 排名',
  `country` char(10) NOT NULL DEFAULT '' COMMENT '國家',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;

插入一些數據:

INSERT INTO `websites` VALUES ('1', 'Google', 'https://www.google.cm/', '1', 'USA'), ('2', '淘寶', 'https://www.taobao.com/', '13', 'CN'), ('3', '菜鳥教程', 'http://www.runoob.com', '5892', ''), ('4', '微博', 'http://weibo.com/', '20', 'CN'), ('5', 'Facebook', 'https://www.facebook.com/', '3', 'USA');

 數據表顯示以下:

 

鏈接數據庫

如下實例使用了 JDBC 鏈接 MySQL 數據庫,注意一些數據如用戶名,密碼須要根據你的開發環境來配置

MySQL 8.0 以上版本的數據庫鏈接有所不一樣:

  • 一、MySQL 8.0 以上版本驅動包版本 mysql-connector-java-8.0.16.jar

  • 二、com.mysql.jdbc.Driver 更換爲 com.mysql.cj.jdbc.Driver。

  • MySQL 8.0 以上版本不須要創建 SSL 鏈接的,須要顯示關閉。

  • 最後還須要設置 CST。

加載驅動與鏈接數據庫方式以下:

//MySQL 8.0 如下版本 - JDBC 驅動名及數據庫 URL
static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
static final String DB_URL = "jdbc:mysql://localhost:3306/<數據庫名>";

// MySQL 8.0 以上版本 - JDBC 驅動名及數據庫 URL
static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";  
static final String DB_URL = "jdbc:mysql://localhost:3306/<數據庫名>?useSSL=false&serverTimezone=UTC";

這裏還要再說明一下:

com.mysql.jdbc.Driver 是 mysql-connector-java 5中的驅動名,
com.mysql.cj.jdbc.Driver 是 mysql-connector-java 6中的驅動名

我這裏使用的是5版。

import java.sql.*;

public class test {
 
    //MySQL 8.0 以上版本 - JDBC 驅動名及數據庫 URL
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
    static final String DB_URL = "jdbc:mysql://localhost:3306/test?useSSL=false&serverTimezone=UTC";
 
    // 數據庫的用戶名與密碼,須要根據本身的設置
    static final String USER = "root";
    static final String PASS = "123456";
 
    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        try{
            // 註冊 JDBC 驅動
            Class.forName(JDBC_DRIVER);
        
            // 打開連接
            System.out.println("鏈接數據庫...");
            conn = DriverManager.getConnection(DB_URL,USER,PASS);
        
            // 執行查詢
            System.out.println(" 實例化Statement對象...");
            stmt = conn.createStatement();
            String sql;
            sql = "SELECT id, name, url FROM websites";
            ResultSet rs = stmt.executeQuery(sql);
        
            // 展開結果集數據庫
            while(rs.next()){
                // 經過字段檢索
                int id  = rs.getInt("id");
                String name = rs.getString("name");
                String url = rs.getString("url");
    
                // 輸出數據
                System.out.print("ID: " + id);
                System.out.print(", 站點名稱: " + name);
                System.out.print(", 站點 URL: " + url);
                System.out.print("\n");
            }
            // 完成後關閉
            rs.close();
            stmt.close();
            conn.close();
        }catch(SQLException se){
            // 處理 JDBC 錯誤
            se.printStackTrace();
        }catch(Exception e){
            // 處理 Class.forName 錯誤
            e.printStackTrace();
        }finally{
            // 關閉資源
            try{
                if(stmt!=null) stmt.close();
            }catch(SQLException se2){
            }// 什麼都不作
            try{
                if(conn!=null) conn.close();
            }catch(SQLException se){
                se.printStackTrace();
            }
        }
        System.out.println("Goodbye!");
    }
}

以上實例執行輸出結果以下:

相關文章
相關標籤/搜索