Java Can';你不能连接到数据库吗?

Java Can';你不能连接到数据库吗?,java,mysql,jdbc,database-connection,Java,Mysql,Jdbc,Database Connection,我正在做一个简单的注册程序来练习。为此,我需要连接到数据库。我尝试了不同的方法,但没有成功 我正在使用Xampp和MySQL工作台。我没有设置任何密码或用户名。MySQL Workbench上显示: 连接: 名称:demo 主持人:127.0.0.1 港口:3306 服务器:mariadb.org二进制分发 版本:10.1.37-1 连接器:C++ +0.14 登录用户:root 当前用户:root@localhost SSL:已禁用 import java.sql.*; public cla

我正在做一个简单的注册程序来练习。为此,我需要连接到数据库。我尝试了不同的方法,但没有成功

我正在使用Xampp和MySQL工作台。我没有设置任何密码或用户名。MySQL Workbench上显示: 连接: 名称:demo 主持人:127.0.0.1 港口:3306 服务器:mariadb.org二进制分发 版本:10.1.37-1 连接器:C++ +0.14 登录用户:root 当前用户:root@localhost SSL:已禁用

import java.sql.*;

public class Driver {

    public static void main(String[] args) {

        try {
            // 1. Get connection to the database
        //  Connection myConnection = DriverManager.getConnection("jdbc:mysql://localhost:3306/demo", "student", "student");
            //Connection myConnection = DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/demo");
            String url = "jdbc:mysql://127.0.0.1:3306/mysql";
            Connection myConnection = DriverManager.getConnection(url);

            //2. Create a statement
            Statement myStatement = myConnection.createStatement();

            //3. execute sql query
            ResultSet myResultSet = myStatement.executeQuery("SELECT * FROM students");

            //4. process the result set
            while(myResultSet.next()) {
                System.out.println(myResultSet.getString("lname") + ", " + myResultSet.getString("fname"));
            }
        }
        catch (Exception e) {
            e.printStackTrace();

        }



    }

}
java.sql.SQLSyntaxErrorException:拒绝用户'@'localhost'访问数据库'mysql'
位于com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:120)
位于com.mysql.cj.jdbc.exceptions.SQLError.createSQLException(SQLError.java:97)
位于com.mysql.cj.jdbc.exceptions.SQLExceptionsMapping.translateException(SQLExceptionsMapping.java:122)
位于com.mysql.cj.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:827)
位于com.mysql.cj.jdbc.ConnectionImpl.(ConnectionImpl.java:447)
位于com.mysql.cj.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:237)
位于com.mysql.cj.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:199)
位于java.sql.DriverManager.getConnection(DriverManager.java:664)
位于java.sql.DriverManager.getConnection(DriverManager.java:270)
位于jdbcdemo.Driver.main(Driver.java:14)

这个答案是推测性的,因为我还没有在MySQL上实际测试过它,但我发现您当前的方法存在两个问题:

  • 您提到您没有创建任何用户名或密码。然而,据我所知,即使您没有创建用户名,您也会使用MySQL附带的任何默认值(通常是
    root
  • 不设置密码是可能的,但是在这种情况下,您仍然应该使用三个参数变量
    DriverManager.getConnection
    ,它接受JDBC URL、用户名(默认)和密码(在您的情况下为空)
综合以上内容,您可以尝试:

String url = "jdbc:mysql://127.0.0.1:3306/mysql";
Connection myConnection = DriverManager.getConnection(url, "root", "");

然后,尝试使用您的连接,前提是上述方法有效。

连接URL的格式如下:

mysql://<username>:<password>@<host>:<port>/<db_name>
mysql://:@:/

试试这个答案,现在我发现了更多的错误。你是对的用户名是“root”你还有什么错误?您的root用户需要密码才能通过jdbc连接。。。
mysql://<username>:<password>@<host>:<port>/<db_name>