关于”找不到适合JDBC的驱动程序: MySQL80“的问题

用IDEA编程出现的:
java.sql.SQLException: No suitable driver found for jdbc:MySQL80://localhost:3306/musiclibary?user=root
at java.sql.DriverManager.getConnection(DriverManager.java:689)
at java.sql.DriverManager.getConnection(DriverManager.java:247)
at yecheng.music.database.MysqlDB.(MysqlDB.java:31)
at yecheng.Server$ServerDataBase.(Server.java:42)
at yecheng.Server.main(Server.java:105)
百度之后,添加了jar包,环境变量也改了,该添加的都添加了,但还是出了问题,求教,下面是代码:
package yecheng.music.database;

import org.json.JSONObject;
import yecheng.music.ReadFile;
import yecheng.music.fingerprint.Fingerprint;

import java.io.File;
import java.sql.*;
import java.util.HashMap;
import java.util.Map;

/**

  • Created by hsyecheng on 2015/6/12.
    */
    @SuppressWarnings("FieldCanBeLocal")
    public class MysqlDB {
    private Connection dbConn;
    private Statement dbStatement;
    private PreparedStatement insertMusic;

    private final String driver = "com.mysql.jdbc.Driver";
    private final String url = "jdbc:MySQL80://localhost:3306/musiclibary?user=root";
    private final String user = "root";
    private final String password = "123456";

    public MysqlDB() {
    super();

    try {
        Class.forName(driver);
        dbConn = DriverManager.getConnection(url, user, password);
        if(dbConn.isClosed())
            throw new Exception("can not open Database");
        dbStatement = dbConn.createStatement(ResultSet.TYPE_FORWARD_ONLY, ResultSet.CONCUR_READ_ONLY);
        dbStatement.setFetchSize(Integer.MIN_VALUE);
    }catch(Exception e){
        e.printStackTrace();
    }
    
    String exec = "INSERT INTO `musiclibary`.`musicinfo` " +
            "(`Title`, `Artist`, `Album`, `FileDir`, `InfoDir`) " +
            "VALUES ( ? , ? , ? , ? , ? );";
    try {
        insertMusic = dbConn.prepareStatement(exec, Statement.RETURN_GENERATED_KEYS);
    } catch (SQLException e) {
        e.printStackTrace();
    }
    

    }

    public synchronized void insert(String fileDir){
    ReadFile readFile = new ReadFile();
    try {
    File file = new File(fileDir);
    readFile.readFile(file);
    } catch (Exception e) {
    e.printStackTrace();
    return;
    }

    Fingerprint fp = readFile.fingerprint;
    String Title = readFile.Title;
    String Artist = readFile.Artist;
    String Album = readFile.Album;
    String InfoDir = "";
    
    /*String exec = "INSERT INTO `musiclibary`.`musicinfo` " +
            "(`Title`, `Artist`, `Album`, `FileDir`, `InfoDir`) " +
            "VALUES ('" + stringReplace("") + "', '" + stringReplace("") + "', '" + stringReplace("") + "', '"
            + stringReplace(fileDir) + "','" + stringReplace("") + "');";*/
    
    int id;
    
    /*String exec = "INSERT INTO `musiclibary`.`musicinfo` " +
            "(`Title`, `Artist`, `Album`, `FileDir`, `InfoDir`) " +
            "VALUES ('?,?,?,?,?);";*/
    try {
        insertMusic.setString(1,Title);
        insertMusic.setString(2,Artist);
        insertMusic.setString(3,Album);
        insertMusic.setString(4, fileDir);
        insertMusic.setString(5,InfoDir);
        insertMusic.executeUpdate();
    
        ResultSet rs=insertMusic.getGeneratedKeys();
        rs.next();
        id = rs.getInt(1);
        rs.close();
    } catch (SQLException e) {
        System.out.print(e.getSQLState());
        e.printStackTrace();
        return;
    }
    
    /*int id;
    ResultSet rs;
    exec = "select idMusicInfo from `musiclibary`.`musicinfo` " +
            "where FileDir='" + stringReplace(fileDir) +   "';";
    try {
        rs = dbStatement.executeQuery(exec);
        rs.next();
        id = rs.getInt(1);
        rs.close();
    } catch (Exception e) {
        e.printStackTrace();
        return;
    }*/
    
    StringBuilder buf = new StringBuilder("INSERT INTO `musiclibary`.`hashtable` " +
            "(`Hash`, `ID`, `Time`) " +
            "VALUES");
    
    for(Fingerprint.Link link : fp.getLinkList()){
        Index.Info info  = new Index.Info(id,link);
        buf.append("(").append(info.hash).append(",").append(info.id).append(",").append(info.time).append("),");
    }
    buf.replace(buf.length()-1,buf.length(),";");
    
    try {
        dbStatement.execute(buf.toString());
    } catch (SQLException e) {
        System.out.print(e.getSQLState());
        e.printStackTrace();
    }
    /*exec = "INSERT INTO `musiclibary`.`hashtable` " +
            "(`Hash`, `ID`, `Time`) " +
            "VALUES ('" + stringReplace("") + "', '" + stringReplace("") + "', '" + stringReplace("") + "');";
    try {
        dbStatement.execute(exec);
    } catch (SQLException e) {
        System.out.print(e.getSQLState());
        e.printStackTrace();
    }*/
    

    }

    @SuppressWarnings("unused")
    public synchronized ResultSet search(int hash){
    String exec = "SELECT * from musiclibary.hashtable WHERE Hash="+ hash + ";";

    ResultSet resultSet;
    try {
        resultSet = dbStatement.executeQuery(exec);
    } catch (SQLException e) {
        e.printStackTrace();
        return null;
    }
    return resultSet;
    

    }

    public synchronized ResultSet searchAll(int[] hash){
    int len = hash.length;
    String tmp1 = "SELECT * FROM musiclibary.hashtable WHERE Hash in(";
    StringBuilder exec = new StringBuilder();

    exec.append(tmp1);
    for(int i = 0; i < len; i ++){
        exec.append(hash[i]).append(",");
    }
    len = exec.length();
    exec.replace(len - 1, len, ");");
    
    ResultSet resultSet;
    try {
        resultSet = dbStatement.executeQuery(exec.toString());
    } catch (SQLException e) {
        e.printStackTrace();
        return null;
    }
    return resultSet;
    

    }

    public synchronized ResultSet listAll(){
    String exec = "SELECT * FROM musiclibary.hashtable";
    ResultSet resultSet;
    try {
    resultSet = dbStatement.executeQuery(exec);
    } catch (SQLException e) {
    e.printStackTrace();
    return null;
    }
    return resultSet;
    }

    public synchronized JSONObject getByID(int id){
    String exec = "SELECT * FROM musiclibary.musicinfo WHERE idMusicInfo=" + id;
    ResultSet resultSet;
    try {
    resultSet = dbStatement.executeQuery(exec);
    } catch (SQLException e) {
    e.printStackTrace();
    return null;
    }
    Map map = new HashMap<>();
    try {
    while (resultSet.next()){
    String Title = resultSet.getString(2);
    String Artist = resultSet.getString(3);
    String Album = resultSet.getString(4);

            map.put("Title",Title);
            map.put("Artist",Artist);
            map.put("Album",Album);
        }
    } catch (SQLException e) {
        e.printStackTrace();
        return null;
    }
    return new JSONObject(map);
    

    }
    }

jdbc:MySQL://localhost:3306/musiclibary?user=root
这样写看看
或者你的驱动是Mysql80的么?要匹配才行

数据库url标准的是jdbc:mysql://localhost:3306/数据库名?useUnicode=true&characterEncoding=utf8&zeroDateTimeBehavior=convertToNull,驱动是mysql-connector-java-5.1.45.jar;jdbc:MySQL80没有查到

改成jdbc:MySQL://localhost:3306/musiclibary?user=root后报这样
"C:\Program Files\java\jdk1.8.0_171\bin\java.exe" "-javaagent:D:\idea\IntelliJ IDEA 2018.1.2\lib\idea_rt.jar=62450:D:\idea\IntelliJ IDEA 2018.1.2\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files\java\jdk1.8.0_171\jre\lib\charsets.jar;C:\Program Files\java\jdk1.8.0_171\jre\lib\deploy.jar;C:\Program Files\java\jdk1.8.0_171\jre\lib\ext\access-bridge-64.jar;C:\Program Files\java\jdk1.8.0_171\jre\lib\ext\cldrdata.jar;C:\Program Files\java\jdk1.8.0_171\jre\lib\ext\dnsns.jar;C:\Program Files\java\jdk1.8.0_171\jre\lib\ext\jaccess.jar;C:\Program Files\java\jdk1.8.0_171\jre\lib\ext\jfxrt.jar;C:\Program Files\java\jdk1.8.0_171\jre\lib\ext\localedata.jar;C:\Program Files\java\jdk1.8.0_171\jre\lib\ext\nashorn.jar;C:\Program Files\java\jdk1.8.0_171\jre\lib\ext\sunec.jar;C:\Program Files\java\jdk1.8.0_171\jre\lib\ext\sunjce_provider.jar;C:\Program Files\java\jdk1.8.0_171\jre\lib\ext\sunmscapi.jar;C:\Program Files\java\jdk1.8.0_171\jre\lib\ext\sunpkcs11.jar;C:\Program Files\java\jdk1.8.0_171\jre\lib\ext\zipfs.jar;C:\Program Files\java\jdk1.8.0_171\jre\lib\javaws.jar;C:\Program Files\java\jdk1.8.0_171\jre\lib\jce.jar;C:\Program Files\java\jdk1.8.0_171\jre\lib\jfr.jar;C:\Program Files\java\jdk1.8.0_171\jre\lib\jfxswt.jar;C:\Program Files\java\jdk1.8.0_171\jre\lib\jsse.jar;C:\Program Files\java\jdk1.8.0_171\jre\lib\management-agent.jar;C:\Program Files\java\jdk1.8.0_171\jre\lib\plugin.jar;C:\Program Files\java\jdk1.8.0_171\jre\lib\resources.jar;C:\Program Files\java\jdk1.8.0_171\jre\lib\rt.jar;D:\tinggeshiqu\out\production\tinggeshiqu;D:\tinggeshiqu\lib\com.springsource.org.json-1.0.0.jar;D:\tinggeshiqu\lib\jl1.0.1.jar;D:\tinggeshiqu\lib\JTransforms-3.0.jar;D:\tinggeshiqu\lib\mysql-connector-java-5.1.33-bin.jar;D:\mysql-connector-java-5.1.46\mysql-connector-java-5.1.46-bin.jar;D:\tinggeshiqu\lib\JLargeArrays-1.4.jar;C:\Program Files\java\jre1.8.0_171\lib\ext\mysql-connector-java-5.1.46\mysql-connector-java-5.1.46-bin.jar;C:\Program Files\java\jdk1.8.0_171\lib\mysql-connector-java-5.1.46-bin.jar" yecheng.Server
Loading Database!
Sun May 06 12:30:43 CST 2018 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
Complete!
Sun May 06 12:30:47 CST 2018 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.

Sun May 06 12:30:43 CST 2018 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by default if explicit option isn't set. For compliance with existing applications not using SSL the verifyServerCertificate property is set to 'false'. You need either to explicitly disable SSL by setting useSSL=false, or set useSSL=true and provide truststore for server certificate verification.
Complete!
Sun May 06 12:30:47 CST 2018 WARN: Establishing SSL connection without server's identity verification is not recommended. According to MySQL 5.5.45+, 5.6.26+ and 5.7.6+ requirements SSL connection must be established by d

参考:https://blog.csdn.net/wsywb111/article/details/78950559

标准的url后面增加&useSSL=false,是因为mysql5.7之后对于链接进行了安全限制