在 Linux (Mageia) 上的 NetBeans 中从 Java 应用程序连接到 MariaDB

Connect to MariaDB from Java application in NetBeans on Linux (Mageia)(在 Linux (Mageia) 上的 NetBeans 中从 Java 应用程序连接到 MariaDB)
本文介绍了在 Linux (Mageia) 上的 NetBeans 中从 Java 应用程序连接到 MariaDB的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试通过一个简单的 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/

补充说明:

  1. 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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

How can create a producer using Spring Cloud Kafka Stream 3.1(如何使用Spring Cloud Kafka Stream 3.1创建制片人)
Insert a position in a linked list Java(在链接列表中插入位置Java)
Did I write this constructor properly?(我是否正确地编写了这个构造函数?)
Head value set to null but tail value still gets displayed(Head值设置为空,但仍显示Tail值)
printing nodes from a singly-linked list(打印单链接列表中的节点)
Control namespace prefixes in web services?(控制Web服务中的命名空间前缀?)