我有一个在docker容器上运行的mysql服务器。启用的端口是3306.我尝试连接到一个数据库并使用jdbc从Java进行测试选择。到目前为止,这是我的代码:
Conexion.java
package webscraper;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
public class Conexion {
protected Connection cn = null;
protected PreparedStatement ps = null;
protected ResultSet rs = null;
public Connection obtenerConexion() throws Exception {
Class.forName("com.mysql.jdbc.Driver");
return DriverManager.getConnection("jdbc:mysql://127.0.0.1:3306/prueba","test","testuser");
}
}
PruebaDao.java
package webscraper;
import java.lang.Exception;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import java.util.ArrayList;
public class PruebaDao extends Conexion {
public static void main(String args[]) throws Exception, SQLException {
PruebaDao p = new PruebaDao();
p.test();
}
public void test() throws SQLException {
try {
String qryUsuario = "SELECT id, usuario FROM usuario;";
cn = obtenerConexion();
ps = cn.prepareStatement(qryUsuario);
rs = ps.executeQuery();
while (rs.next()) {
System.out.println("Usuario " + rs.getInt(1) + ": " + rs.getString(2));
}
} catch (Exception e) {
System.out.println("Error en main por " + e.getMessage());
} finally {
if (cn != null) {
cn.close();
}
}
}
}
我想从PruebaDao.java(位于主机上)执行单个选择到docker容器上托管的mysql服务器。但是当我执行PruebaDao.java时,我收到了下一条消息:
通讯链接失败。成功发送到服务器的最后一个数据包是0毫秒前。驱动程序未收到来自服务器的任何数据包。
我尝试在jdbc字符串连接中使用localhost进行连接,但它似乎是一样的。我执行了docker ps并获得了下一个输出:
IMAGE COMMAND创建状态端口名称 ae2161d9724d mysql / mysql-server:5.5" /entrypoint.sh mysq ..." 7天前最多30分钟(健康)3306 / tcp mysql1
这似乎是正确的端口。
任何帮助将不胜感激:)