【发布时间】:2011-11-04 21:16:20
【问题描述】:
我正在尝试使用 JDBC 在我的 Java 应用程序中建立连接以访问我的在线数据库,以便插入和查询表。这是我目前正在尝试的:(实际 IP/用户/密码已编辑,但它们是正确的,因为我已经从 PHP 脚本中完成了类似操作)
String url = "jdbc:mysql://984.168.199.70/my_db_name";
String user = "my_username";
String pass = "my_password";
Class.forName ("com.mysql.jdbc.Driver").newInstance ();
Connection conn = (Connection) DriverManager.getConnection(url, user, pass);
stmt = (Statement) conn.createStatement();
但这不起作用,我收到错误:
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.
在那之后的错误日志很长。
所以要指出:我在使用 PHP 脚本之前已经连接到这个服务器,并且我已经使用 JDBC 连接到我的本地 MySQL 数据库并与之交互。
感谢您的帮助。
【问题讨论】:
-
有没有为 MySQL 开放的特殊端口,或者是默认端口?
-
至于具体问题,请查看stackoverflow.com/questions/2983248/jdbc-with-mysql/…至于您发布的代码,那些不必要的转换让我认为您实际上为
Connection和Statement导入了MySQL的具体实现类.虽然不一定是您的问题的原因,但这是一种不好的做法。始终声明反对java.sql.*接口!如果您升级驱动程序或切换数据库,否则您的 JDBC 代码会中断并需要完全重写/重建。 -
哦,我的类中有 private Statement stmt 之类的变量,以及 java.sql.* 导入。我错过了什么吗?
-
没关系。然后删除那些误导性的不必要的演员表。同样,它与您的具体问题无关。请参阅重复链接。