java - 为什么我不能通过 Java 访问远程数据库?

标签 java database connect

我正在尝试制作一个 Java 应用程序,它需要与 MySQL 数据库连接才能读取数据。

我已经阅读了几个教程和示例,尝试了几乎所有的方法,但我就是无法访问数据库。

目前我正在使用它连接到数据库:

try{
   Class.forName("com.mysql.jdbc.Driver");
   con = DriverManager.getConnection("jdbc:mysql://myhost/test","databaseUser",  "password");
}
catch (Exception e){
   System.out.println(e);
}

堆栈跟踪:

com.mysql.jdbc.CommunicationsException: Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

com.mysql.jdbc.CommunicationsException MESSAGE: Communications link failure due to underlying exception:

** BEGIN NESTED EXCEPTION **

java.io.EOFException MESSAGE: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost.

STACKTRACE:

java.io.EOFException: Can not read response from server. Expected to read 4 bytes, read 0 bytes before connection was unexpectedly lost. at com.mysql.jdbc.MysqlIO.readFully(MysqlIO.java:1997) at com.mysql.jdbc.MysqlIO.readPacket(MysqlIO.java:573) at com.mysql.jdbc.MysqlIO.doHandshake(MysqlIO.java:1044) at com.mysql.jdbc.Connection.createNewIO(Connection.java:2775) at com.mysql.jdbc.Connection.(Connection.java:1555) at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:285) at java.sql.DriverManager.getConnection(DriverManager.java:582) at java.sql.DriverManager.getConnection(DriverManager.java:185) at facturatiesysteem.SysteemView.zoekKlant(SysteemView.java:148) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at org.jdesktop.application.ApplicationAction.noProxyActionPerformed(ApplicationAction.java:662) at org.jdesktop.application.ApplicationAction.actionPerformed(ApplicationAction.java:698) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:6288) at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) at java.awt.Component.processEvent(Component.java:6053) at java.awt.Container.processEvent(Container.java:2041) at java.awt.Component.dispatchEventImpl(Component.java:4651) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4481) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) at java.awt.Container.dispatchEventImpl(Container.java:2085) at java.awt.Window.dispatchEventImpl(Window.java:2478) at java.awt.Component.dispatchEvent(Component.java:4481) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:643) at java.awt.EventQueue.access$000(EventQueue.java:84) at java.awt.EventQueue$1.run(EventQueue.java:602) at java.awt.EventQueue$1.run(EventQueue.java:600) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) at java.awt.EventQueue$2.run(EventQueue.java:616) at java.awt.EventQueue$2.run(EventQueue.java:614) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.awt.EventQueue.dispatchEvent(EventQueue.java:613) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

** END NESTED EXCEPTION **

发送到服务器的最后一个数据包是 16 毫秒前。

还有更多...

但我无法访问它。

我可以在这里做什么?

最佳答案

phpmyadmin 是一个数据库的前端,一个 web 应用程序。它不是数据库。您不能通过 phpmyadmin 访问 Java 中的数据库。您需要直接访问数据库本身(称为 MySQL,顺便说一句)。不确定您的托管服务提供商是否允许。

关于java - 为什么我不能通过 Java 访问远程数据库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7058477/

相关文章:

java代码从zk框架中的数据库列条目获取单选按钮标签

java - 数据库到android,用php

node.js - 连接中的访问控制源(node.js)

java - 最大化两个凸包之间的最小距离

java - 正则表达式忽略某些字符之间的情况

mysql - 将 xampp localhost 从 Mariadb 连接到 MySQL 数据库

node.js - ExpressJS 请求对象

Android Studio 无法获取 - 连接被拒绝 : connect

java - IntelliJ 和 Play 框架 : "` scala-library` has broken sources path"

python - 使用可移植的Python连接到Access数据库