问题描述
我正在尝试通过一个简单的 java 应用程序连接到 Mariadb 中的数据库,但连接被告知不成功并引发异常.我已经使用 mysql 完成了类似的连接,并且工作正常.问题可能出在这里的驱动程序上.
I am trying to connect to a database in Mariadb through a simple java application but the connection is told to be unsuccessful and an Exception is thrown. I have done the similar connection using mysql and it was working correctly. The problem is maybe with the driver here.
try{
Class.forName("org.mariadb.jdbc.Driver");
Connection connection = DriverManager.getConnection(
"jdbc:mariadb://localhost:3306/project", "root", "");
Statement statement = connection.createStatement();
String uname="xyz",pass="abc";
statement.executeUpdate("insert into user values('"+uname+"','"+pass+"')");}//end of try block
我在网上寻找帮助,发现 MariaDB Client Library for Java Applications 提供的驱动程序类不是 com.mysql.jdbc.Driver 而是 org.mariadb.jdbc.Driver!我相应地对其进行了更改,但似乎问题出在 try 块内的第一行.驱动程序根本没有加载.此外,我已将 mysql jar 文件添加到我的 java 应用程序的库中,如下面的屏幕截图所示.请帮我解决这个问题.
I looked up the internet for the help and came by that driver class provided by the MariaDB Client Library for Java Applications is not com.mysql.jdbc.Driver but org.mariadb.jdbc.Driver! I changed it accordingly but it seems the problem is with the very first line inside the try block. The driver is not loading at all. Also, I have added the mysql jar file to the libraries of my java application as in the screen-shot below. Please help me through this.
推荐答案
您似乎正在尝试使用 jdbc:mariadb://...
建立与 MariaDB 服务器实例的连接使用 MySQL JDBC 驱动程序.这可能行不通,因为 MySQL JDBC 驱动程序将使用 jdbc:mysql://...
,无论它是连接到 MySQL 服务器还是 MariaDB 服务器.也就是说,连接字符串必须匹配正在使用的驱动程序(而不是正在访问的数据库服务器).
It appears that you are trying to use jdbc:mariadb://...
to establish a connection to a MariaDB server instance using the MySQL JDBC Driver. That probably won't work because the MySQL JDBC Driver would use jdbc:mysql://...
, regardless of whether it is connecting to a MySQL server or a MariaDB server. That is, the connection string must match the driver that is being used (rather than the database server being accessed).
MySQL 和 MariaDB 驱动程序应该可以互换,但在访问 MariaDB 服务器时使用 MariaDB 连接器似乎是明智的.对于它的价值,mariadb-java-client-1.1.7.jar
The MySQL and MariaDB drivers are supposed to be somewhat interchangeable, but it only seems prudent to use the MariaDB connector when accessing a MariaDB server. For what it's worth, the combination of mariadb-java-client-1.1.7.jar
和
Connection con = DriverManager.getConnection(
"jdbc:mariadb://localhost/project",
"root",
"whatever");
为我工作.我从这里下载了适用于 Java 的 MariaDB 客户端库:
worked for me. I downloaded the MariaDB Client Library for Java from here:
https://downloads.mariadb.org/client-java/1.1.7/
我是通过
https://downloads.mariadb.org/
补充说明:
Java 代码中不需要
Class.forName()
语句.
Mageia 下 MariaDB 的默认配置可能包括 /etc/my.cnf
中的 skip-networking
指令.如果您想通过 JDBC 连接到数据库,则需要删除(或注释掉)该指令,因为 JDBC 连接总是看起来像与 MySQL/MariaDB 的网络"连接,即使它们是来自 localhost
.(您可能还需要将 bind-address
值调整为 0.0.0.0
之类的值.)
The default configuration for MariaDB under Mageia may include the skip-networking
directive in /etc/my.cnf
. You will need to remove (or comment out) that directive if you want to connect to the database via JDBC because JDBC connections always look like "network" connections to MySQL/MariaDB, even if they are connections from localhost
. (You may need to tweak the bind-address
value to something like 0.0.0.0
as well.)
这篇关于在 Linux (Mageia) 上的 NetBeans 中从 Java 应用程序连接到 MariaDB的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!