使用JDBC连接到MySQL DB的问题

时间:2010-12-20 21:06:55

标签: java sql mysql jdbc connection

以下是我尝试连接的方式:

try {
   Class.forName("com.mysql.jdbc.Driver").newInstance();
   } catch (Exception e) {
      throw new DbConnectionException();
   }
   try {
      connection = DriverManager.getConnection(url,username,password);
   } catch (SQLException e) {
      e.printStackTrace();
      throw new DbConnectionException();
   }

我100%确定网址,用户名,密码字符串是否正确。我已经使用外部工具(MySQL查询浏览器)成功连接。 这是我收到的错误:

  

com.mysql.jdbc.CommunicationsException:   由于通信链路故障   潜在的例外:

     

**开始没有异常**

     

java.net.SocketException消息:   java.net.ConnectException:连接   拒绝

     

...

5 个答案:

答案 0 :(得分:7)

可能是url问题。如果您的代码指向MySQL localhost,请尝试将您的网址上的localhost更改为127.0.0.1

E.g:

jdbc:mysql://localhost:3306/MY_DB

jdbc:mysql://127.0.0.1:3306/MY_DB

看看是否有效。

答案 1 :(得分:1)

你是从运行代码的同一台机器上运行mysql浏览器的吗?我得到的是mysql中的权限可以是特定于主机的,并且根据您设置它们的方式,您可能无法从运行代码的机器进行连接。

此外,您可能需要再次检查url,name,pword,可能还有日志语句或调试器,以确保没有拼写错误,尾随空格等...

答案 2 :(得分:1)

仔细检查您的网址格式。它应该以“jdbc:mysql:”开头。确保您也使用当前版本的驱动程序。

答案 3 :(得分:0)

检查您是否可以从mysql管理工具连接到数据库,这将驱逐您的mysql是否正在运行以及该端口是否已打开。

答案 4 :(得分:0)

在我的情况下,问题是我使用了从模拟器到localhost的连接。

如果您将模拟器用于localhost,请不要在连接字符串中使用localhost值,而是使用10.0.2.2代替:

jdbc:mysql://10.0.2.2:3306/MY_DB

希望这有帮助。