mySQL数据库的Java连接

mySQL数据库的Java连接,java,mysql,jdbc,Java,Mysql,Jdbc,我有一个在phpMyAdmin实习的数据库。我使用XAMPP。我正处于学习与数据库连接的早期阶段。我遵循教程,我认为我理解了这个概念,一切都很酷。但我遇到了一个问题,尽管互联网上有答案,但我无法解决它。这是我的密码: import java.sql.*; public class DBConnect { private Connection connection; private Statement statement; private ResultSet resul

我有一个在phpMyAdmin实习的数据库。我使用XAMPP。我正处于学习与数据库连接的早期阶段。我遵循教程,我认为我理解了这个概念,一切都很酷。但我遇到了一个问题,尽管互联网上有答案,但我无法解决它。这是我的密码:

import java.sql.*;

public class DBConnect {

    private Connection connection;
    private Statement statement;
    private ResultSet result;

    public DBConnect(){
        try {
            Class.forName("com.mysql.jdbc.Driver");
            connection = DriverManager.getConnection("jdbc:mysql://localhost:1234/practicedb"); //code stucks here and after some minutes it is throwing an exception
            System.out.println("Connected");//this is never executed.
            statement = connection.createStatement();

        } catch (Exception ex) {
            System.out.print("Error in Constractor: "+ex);
        }
    }

    public void getData() {

        try {

            String query = "select * from cars";

            result = statement.executeQuery(query);
            while (result.next()) {
                String name = result.getString("carName");
                String id = result.getString("carID");
                String modelNum = result.getString("modelNumber");
                System.out.println("Car name: " + name + ", " + "Car ID: " + id + ", " + "Car model number: " + modelNum);
            }

        } catch (Exception ex) {
            System.out.println(ex);
        }

    }
}
在主类中,我创建了该类的一个实例,然后调用getData

代码在那一行出现:

connection = DriverManager.getConnection("jdbc:mysql://localhost:1234/practicedb");
它抛出:

com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
成功发送到服务器的最后一个数据包是0毫秒前的。驱动程序尚未从server.java.lang.NullPointerException收到任何数据包

这里回答了类似的问题:

但这些建议很差。我试过刷新dns。我检查了URL,这是我连接到phpmyadmin上数据库的URL。我将本地主机更改为我的ip地址。但所有这些都不起作用

我非常感谢你的帮助。这是获得知识的第一步,而我目前实际上无法继续。谢谢各位:

我注意到,如果我将localhost:1234更改为像localhost:5432这样的随机值,它会立即抛出错误。但是当我把它放在1234上时,我通过xampp配置选择了这个端口,然后程序运行了大约5分钟,最后异常终止
通常MySQL侦听默认端口3306。 如果数据库名为practicedb,则代码应如下所示:

private Connection connection;    

try {
    connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/practicedb");
    System.out.println("Connected");
} catch (Exception ex) {
    System.out.print("Error creating connection: "+ex);
}

为什么尝试在端口1234上连接?MySQL在3306上侦听验证数据库是否已启动并运行以下命令:netstat-ano | findstr 1234如果在windows上,如果在linux上netstat-anp | grep 1234。您会看到像这样的TCP 0.0.0.0:3389 0.0.0.0:0侦听1316最后一个数字是PID,请验证它是否与mysql服务器相同连接字符串中的用户名和密码在哪里?通常我使用smth,如下所示:String url=jdbc:mysql://127.8.92.130:3306/; 字符串dbName=test;String driver=com.mysql.jdbc.driver;字符串userName=admin;字符串密码=通过;字符串sslState=?useSSL=false;con=DriverManager.getConnectionurl+dbName+sslState,用户名,密码;它显示tcp 0.0.0.0:1234 0.0.0.0:0侦听6136和tcp[::]:1234[::]:0侦听6136@SergeyLotvin我觉得这有点随意。我试过了,什么也没变。还有,这是什么?字符串sslState=?useSSL=false;我已将默认端口更改为1234,因为默认端口有冲突欢迎使用StackOverflow!我不知道你为什么被如此严厉地否决;你的回答本可以包含更多的解释,但肯定也是我的第一个想法,尽管海报的编辑让人觉得情况并非如此。