English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной учебник Java

Java Управление потоком

Java Массивы

Java Ориентированность на объекты (I)

Java Ориентированность на объекты (II)

Java Ориентированность на объекты (III)

Обработка исключений Java

Java Списки (List)

Java Queue (очередь)

Java Map-сборники

Java Set-сборники

Java Вход/Выход (I/O)

Java Reader/Writer

Другие темы Java

Java соединение MySQL

В этой главе мы расскажем, как Java использует JDBC для подключения к базе данных MySQL.

Для подключения Java к MySQL требуется драйвер-пакет, адрес загрузки последней версии:http://dev.mysql.com/downloads/connector/j/После распаковки получите jar-библиотеку, затем импортируйте эту библиотеку в соответствующий проект.

Вы можете загрузить jar-пакет, предоставленный на этом сайте:mysql-connector-java-5.1.39-bin.jar

В этом примере используется Eclipse, импортируйте jar-пакет:

Соединение с базой данных MySQL 8.0 и выше имеет свои особенности:

  • 1、Версия драйвера пакета для версий MySQL 8.0 и выше mysql-connector-java-8.0.16.jar

  • 2、com.mysql.jdbc.Driver Перемените на com.mysql.cj.jdbc.Driver.

  • В версиях MySQL 8.0 и выше не нужно устанавливать SSL-соединение, его нужно явно отключить.

  • allowPublicKeyRetrieval=true позволяет клиенту получать общественный ключ от сервера.

  • В конце还需要 установить CST.

Способ загрузки драйвера и подключения к базе данных таков:

Class.forName("com.mysql.cj.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost:3306/test_demo?useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC","root","password");

Создание тестовых данных

Далее мы создадим базу данных w3codebox в MySQL и создадим таблицу 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', 'w3codebox', 'http://ru.oldtoolbag.com', '5892', ''), ('4', '微博', 'http://weibo.com/', '20', 'CN'), ('5', 'Facebook', 'https://www.facebook.com/', '3', 'USA');

数据表显示如下:

连接数据库

以下示例使用了 JDBC 连接 MySQL 数据库,注意一些数据如用户名,密码需要根据你的开发环境来配置:

package com.w3codebox.test;
 
import java.sql.*;
 
public class MySQLDemo {
 
    // MySQL 8.0 以下版本 - JDBC 驱动名及数据库 URL
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";  
    static final String DB_URL = "jdbc:mysql://localhost:3306/w3codebox";
 
    // MySQL 8.0 以上版本 - JDBC 驱动名及数据库 URL
    //static final String JDBC_DRIVER = "com.mysql.cj.jdbc.Driver";  
    //static final String DB_URL = "jdbc:mysql://localhost:3306/w3codebox?useSSL=false&allowPublicKeyRetrieval=true&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!");
    }
}

Результат выполнения примера приведен выше: