我无法将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秒)
1条答案
按热度按时间hgncfbus1#
我认为问题是您使用的mysql connector/jdbc驱动程序的url无法识别。此url
说从“mariadb”供应商那里找司机。但显然mysql驱动程序并没有(通过spi)宣传自己是mariadb驱动程序。
解决方案
首先你们应该摆脱这个:
它不是必需的,而且您正在将驱动程序类名硬连接到代码中。也要去掉相关的异常处理程序子句(这些都是巫毒编程的东西。可能20年前就需要了。。。但现在不是了。)
可以通过两种方式解决驱动程序分辨率问题:
将url更改为:
根据mariadb文档,mysql connector/j驱动程序与mariadb兼容。但是mysql connector/j文档中没有提到在jdbc url中使用“mariadb”。
切换到mariadb接头/j驱动器。根据文件,这应该支持
或
文件中不清楚“议定书”部分的情况是否重要。但是,mariadb doc中的语法规范使用的是“mariadb”而不是“mariadb”,因此为了风格上的一致性,我建议使用小写。