Estoy tratando de establecer una conexión en mi aplicación Java con JDBC para acceder a mi base de datos en línea para poder insertar y consultar tablas. Aquí es lo que estoy tratando actualmente: (IP real/usuario/editado, pero tienen razón ya que he hecho similar a partir de un script PHP)Java: problemas para conectarse a la base de datos MySQL en línea usando JDBC
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();
Pero esto no funciona, me da la error:
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.
Y el registro de errores es bastante largo después de eso.
Solo para señalar: me he conectado a este servidor antes de usar un script PHP, y he usado JDBC para conectarme e interactuar con mis bases de datos locales de MySQL.
Gracias por cualquier ayuda.
¿Se abrió cualquier puerto especial para MySQL, o es el predeterminado? – sgibly
Además, consulte http://stackoverflow.com/questions/2102912/cant-make-jdbc-connection-to-mysql-using-java-intellij-and-linux – sgibly
En cuanto al problema concreto, consulte http: // stackoverflow.com/questions/2983248/jdbc-with-mysql/2985169#2985169 En cuanto al código que ha publicado hasta ahora, esos cambios innecesarios me hacen pensar que en realidad importó clases de implementación concretas de MySQL para 'Connection' y' Statement'. Si bien no es necesariamente la causa de su problema, esta es una * mala práctica *. ¡Siempre declare contra las interfaces 'java.sql. *'! Si alguna vez actualiza el controlador o cambia la base de datos, su código JDBC se rompería y necesitaría una reescritura/reconstrucción completa. – BalusC