无法将java(netbeans)连接到mariadb

7xllpg7q  于 2021-07-11  发布在  Java
关注(0)|答案(1)|浏览(342)

我无法将java连接到mariadb。我看到了所有类似的问题和答案,但没有一个能解决我的问题。这是我的密码:

/**To change this license header, choose License Headers in Project
 *   Properties.  * To change this template file, choose Tools | Templates 
 * and open the template in the editor.  
 */
package mariadbtest; 

import java.sql.*;

/**
 * 
 * @author AAAA  
 */ 
public class MariaDBTest {

    /**
     * @param args the command line arguments
     */
    public static void main(String[] args){  
        try {
            Class.forName("com.mysql.cj.jdbc.Driver").newInstance();
            String url = "jdbc:MariaDB://localhost:3306/customer"; // url to access the DB
            String user = "root";
            String pwd="password";

            Connection connection = DriverManager.getConnection(url,user,pwd);

            System.out.println("Connected to MariaDB");
        } 
        catch (SQLException e) {
            System.out.println("SQL Exception: "+ e.toString()); 
        } 
        catch (ClassNotFoundException cE) {
            System.out.println("Class Not Found Exception: "+ cE.toString()); 
        }
        catch (Exception ex) {
            System.out.println("Exception: "+ ex.toString()); 
        }

        // TODO code application logic here
    }
}

注意以下几点:
我正在使用连接器mysql-connector-java-8.0.22。
我有最新的java版本。
mariadb版本是10.3.27。
我已将连接器复制到程序文件中java文件夹中的lib目录。
我已经通过properties-->libraries-->add jar/folder将连接器jar文件添加到我的项目中。
mariadb具有服务名称mariadb。
数据库名为customer。
错误:sql异常:java.sql.sqlexception:找不到适合的驱动程序jdbc:mariadb://localhost:3306/customer 生成成功(总时间:3秒)

hgncfbus

hgncfbus1#

我认为问题是您使用的mysql connector/jdbc驱动程序的url无法识别。此url

jdbc:MariaDB://localhost:3306/customer

说从“mariadb”供应商那里找司机。但显然mysql驱动程序并没有(通过spi)宣传自己是mariadb驱动程序。

解决方案

首先你们应该摆脱这个:

Class.forName("com.mysql.cj.jdbc.Driver").newInstance();

它不是必需的,而且您正在将驱动程序类名硬连接到代码中。也要去掉相关的异常处理程序子句(这些都是巫毒编程的东西。可能20年前就需要了。。。但现在不是了。)
可以通过两种方式解决驱动程序分辨率问题:
将url更改为:

jdbc:mysql://localhost:3306/customer

根据mariadb文档,mysql connector/j驱动程序与mariadb兼容。但是mysql connector/j文档中没有提到在jdbc url中使用“mariadb”。
切换到mariadb接头/j驱动器。根据文件,这应该支持

jdbc:mariadb://localhost:3306/customer

jdbc:mysql://localhost:3306/customer

文件中不清楚“议定书”部分的情况是否重要。但是,mariadb doc中的语法规范使用的是“mariadb”而不是“mariadb”,因此为了风格上的一致性,我建议使用小写。

相关问题