mySQL数据库的Java连接
我有一个在phpMyAdmin实习的数据库。我使用XAMPP。我正处于学习与数据库连接的早期阶段。我遵循教程,我认为我理解了这个概念,一切都很酷。但我遇到了一个问题,尽管互联网上有答案,但我无法解决它。这是我的密码: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
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!我不知道你为什么被如此严厉地否决;你的回答本可以包含更多的解释,但肯定也是我的第一个想法,尽管海报的编辑让人觉得情况并非如此。