与MySQL的Java连接失败
我已经在hostinger.co.uk创建了一个MySQL数据库,现在我正在尝试在数据库和我的Java应用程序之间建立连接,为此我编写了以下Java代码:与MySQL的Java连接失败,java,mysql,jdbc,Java,Mysql,Jdbc,我已经在hostinger.co.uk创建了一个MySQL数据库,现在我正在尝试在数据库和我的Java应用程序之间建立连接,为此我编写了以下Java代码: import java.sql.Connection; import java.sql.DriverManager; import java.sql.PreparedStatement; import java.sql.ResultSet; public class DB_Connection { public static vo
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class DB_Connection {
public static void main(String arg[]) throws Exception {
makeConnection("u335300563_myName", "pass12345");
}
public static void makeConnection(String username, String password) throws Exception {
Class.forName("com.mysql.jdbc.Driver");
Connection connection = DriverManager.getConnection("jdbc:mysql://u335300563_database",username,password);
PreparedStatement statement = connection.prepareStatement("select * from example");
ResultSet result = statement.executeQuery();
for(int i=1; result.next(); i++)
System.out.println(result.getString(i));
}
}
但这会引发一个异常,即:
Exception in thread "main" com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failure
The last packet sent successfully to the server was 0 milliseconds ago. The driver has not received any packets from the server.
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:377)
at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1036)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:338)
at com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2232)
at com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2265)
at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2064)
at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:790)
at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:44)
at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
at java.lang.reflect.Constructor.newInstance(Unknown Source)
at com.mysql.jdbc.Util.handleNewInstance(Util.java:377)
at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:395)
at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325)
at java.sql.DriverManager.getConnection(Unknown Source)
at java.sql.DriverManager.getConnection(Unknown Source)
at DB_Connection.makeConnection(DB_Connection.java:14)
at DB_Connection.main(DB_Connection.java:9)
Caused by: java.net.UnknownHostException: u335300563_database
at java.net.Inet6AddressImpl.lookupAllHostAddr(Native Method)
at java.net.InetAddress$1.lookupAllHostAddr(Unknown Source)
at java.net.InetAddress.getAddressesFromNameService(Unknown Source)
at java.net.InetAddress.getAllByName0(Unknown Source)
at java.net.InetAddress.getAllByName(Unknown Source)
at java.net.InetAddress.getAllByName(Unknown Source)
at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:190)
at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:297)
... 16 more
线程“main”com.mysql.jdbc.exceptions.jdbc4.CommunicationsException中的异常:通信链路故障
成功发送到服务器的最后一个数据包是0毫秒前的。驱动程序尚未从服务器收到任何数据包。
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(未知源)
位于sun.reflect.delegatingConstructor或AccessorImpl.newInstance(未知源)
位于java.lang.reflect.Constructor.newInstance(未知源)
位于com.mysql.jdbc.Util.HandleneInstance(Util.java:377)
位于com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1036)
在com.mysql.jdbc.MysqlIO上(MysqlIO.java:338)
位于com.mysql.jdbc.ConnectionImpl.coreConnect(ConnectionImpl.java:2232)
位于com.mysql.jdbc.ConnectionImpl.connectOneTryOnly(ConnectionImpl.java:2265)
位于com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2064)
位于com.mysql.jdbc.ConnectionImpl(ConnectionImpl.java:790)
位于com.mysql.jdbc.JDBC4Connection(JDBC4Connection.java:44)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance0(本机方法)
位于sun.reflect.NativeConstructorAccessorImpl.newInstance(未知源)
位于sun.reflect.delegatingConstructor或AccessorImpl.newInstance(未知源)
位于java.lang.reflect.Constructor.newInstance(未知源)
位于com.mysql.jdbc.Util.HandleneInstance(Util.java:377)
位于com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:395)
位于com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:325)
位于java.sql.DriverManager.getConnection(未知源)
位于java.sql.DriverManager.getConnection(未知源)
at DB_Connection.makeConnection(DB_Connection.java:14)
at DB_Connection.main(DB_Connection.java:9)
原因:java.net.UnknownHostException:u335300563_数据库
在java.net.Inet6AddressImpl.lookupAllHostAddr(本机方法)
位于java.net.InetAddress$1.lookupAllHostAddr(未知源)
位于java.net.InetAddress.getAddressesFromNameService(未知源)
位于java.net.InetAddress.getAllByName0(未知源)
位于java.net.InetAddress.getAllByName(未知源)
位于java.net.InetAddress.getAllByName(未知源)
位于com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:190)
位于com.mysql.jdbc.MysqlIO(MysqlIO.java:297)
... 还有16个
那么请告诉我问题出在哪里
原因:java.net.UnknownHostException:u335300563_数据库
程序无法识别mysql DB的主机
在程序中,您必须传递承载mySQL的系统的正确主机名或IP地址:
下面的行需要从
DriverManager.getConnection("jdbc:mysql://u335300563_database"
,username,password);
到
DriverManager.getConnection(“jdbc:mysql:/”,
用户名、密码);
您已经从中提供了数据库名作为主机名,连接URL应该类似于jdbc:mysql://[host1][:port1]/[database](不包括其他属性)(但这也假设驱动程序)
DriverManager.getConnection("jdbc:mysql://<IP Address of MySQL DB server or correct hostname with port number >",
username,password);