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

Java基础知识教程

Java Controllo dei Flussi

Java Array

Java Orientazione agli Oggetti (I)

Java Orientazione agli Oggetti (II)

Java Orientazione agli Oggetti (III)

Java异常处理

Java List

Java Queue (Coda)

Java Map Collection

Java Set Collection

Java Input/Output (I/O)

Java Reader/Writer

Altri argomenti Java

Connettività MySQL Java

In questa sezione presentiamo come Java utilizza JDBC per connettersi al database MySQL.

Per connettersi a MySQL con Java è necessario il pacchetto del driver, l'indirizzo di download dell'ultima versione è:http://dev.mysql.com/downloads/connector/j/,scompatta e ottieni il file della libreria jar, quindi importa il file della libreria nel progetto corrispondente.

Puoi scaricare i jar forniti da questo sito:mysql-connector-java-5.1.39-bin.jar

Questo esempio utilizza Eclipse, importa il pacchetto jar:

La connessione al database di MySQL 8.0 e versioni superiori è diversa:

  • 1、Versione del pacchetto del driver per MySQL 8.0 e versioni superiori mysql-connector-java-8.0.16.jar

  • 2、com.mysql.jdbc.Driver Sostituisci con com.mysql.cj.jdbc.Driver.

  • Le versioni superiori a MySQL 8.0 non devono stabilire una connessione SSL, deve essere chiaramente disattivata.

  • allowPublicKeyRetrieval=true permette al client di ottenere la chiave pubblica dal server.

  • Infine, è necessario impostare il CST.

Il modo di caricare il driver e connettersi al database è il seguente:

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

Creare dati di test

Di seguito creiamo il database w3codebox in MySQL e la tabella websites, la struttura della tabella è la seguente:

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://it.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";
 
    // Versione 8.0 e superiori di MySQL - nome del driver JDBC e URL del database
    //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";
 
 
    // Nome utente e password del database, da configurare in base alle proprie esigenze
    static final String USER = "root";
    static final String PASS = "123456";
 
    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        try{
            // Registrare JDBC 驱动
            Class.forName(JDBC_DRIVER);
        
            // Aprire la connessione
            System.out.println("Connettere al database...");
            conn = DriverManager.getConnection(DB_URL,USER,PASS);
        
            // Eseguire la query
            System.out.println(" Eseguire l'oggetto Statement...");
            stmt = conn.createStatement();
            String sql;
            sql = "SELECT id, name, url FROM websites";
            ResultSet rs = stmt.executeQuery(sql);
        
            // Espande il database del result set
            while(rs.next()){
                // Ricerca tramite campo
                int id  = rs.getInt("id");
                String name = rs.getString("name");
                String url = rs.getString("url");
    
                // Stampa i dati
                System.out.print("ID: " + id);
                System.out.print(", NOME DEL SITO: " + name);
                System.out.print(", URL sito: " + url);
                System.out.print("\n");
            }
            // Chiudi dopo aver completato
            rs.close();
            stmt.close();
            conn.close();
        }catch(SQLException se){
            // Gestisci errore JDBC
            se.printStackTrace();
        }catch(Exception e){
            // Gestisci errore Class.forName
            e.printStackTrace();
        }finally{
            // Chiudi risorse
            try{
                if(stmt!=null) stmt.close();
            }catch(SQLException se2){
            // Non fare nulla
            try{
                if(conn!=null) conn.close();
            }catch(SQLException se){
                se.printStackTrace();
            }
        }
        System.out.println("Ciao!");
    }
}

I risultati di esecuzione degli esempi sopra riportati sono i seguenti: