2014-02-23 130 views
0

无法连接到服务器意味着代码不输出任何内容。我认为,问题在于获取连接(即使我更改登录或传递)。顺便说一下,jdbc驱动程序被加载(我没有单独安装,它默认安装了MySQL)。 '用户'表位于新创建的数据库中。请给一个知道该怎么做:无法连接到MySQL

import java.sql.*; 
import java.sql.Connection; 
import java.sql.Statement; 

public class DBConn { 

    public static void main(String[] args) { 
     Connection conn = null; 
     Statement statement = null; 
     ResultSet resultSet = null; 

     try{ 
      Class.forName("com.mysql.jdbc.Driver"); 
      String url = "jdbc:mysql://localhost:3306/users"; 
      conn = DriverManager.getConnection(url, "root", "1111"); 
      statement = conn.createStatement(); 
      resultSet = statement.executeQuery("SELECT * FROM users"); 
      while(resultSet.next()){ 
       System.out.println(resultSet.getInt("user_id") + ":" + resultSet.getString("usersName")); 
      } 
     } catch (ClassNotFoundException e){ 
      e.printStackTrace(); 
     } catch (SQLException e){ 
      e.printStackTrace(); 
     } finally { 

      try { 
       if (resultSet != null) resultSet.close(); 
       if (statement != null) statement.close(); 
       if (conn != null) conn.close(); 
      } catch (SQLException e){ 
       e.printStackTrace(); 
      } 
     } 
    } 
} 
+2

你得到堆栈跟踪有什么异常? – Kick

+0

'localhost:3306'指的是TCP套接字,但是mysql倾向于将TCP“localhost”重写为unix域套接字连接,而不是为了提高效率。如果您的驱动程序/客户端设置不正确并在错误的地方查找套接字,则无法连接。这或它真的是试图通过tcp连接,并且您的服务器已配置为跳过网络和/或未绑定到localhost:3306。 –

+0

您正试图连接到名为'users'的数据库并查询名为'users'的表。这是故意的吗?如果是这样,您可能需要将SQL查询更改为'resultSet = statement.executeQuery(“SELECT * FROM users.users”);'。否则,它可能是MySql中的用户权限问题。无论如何,下次向我们展示您遇到的任何错误都会帮助您更快地获得答案,并帮助我们更好地了解您的问题。 –

回答

0

按照以下步骤,否则你的代码是正确的:

  1. 检查mysql-connector-java-xxx库项目
  2. 是数据库users,希望不会因此改变下面 行:

String url = "jdbc:mysql://localhost:3306/<put your Database Name>";

+0

伙计们,很抱歉给我一个长时间的回复 - 我有一整天的工作,并且只能在深夜访问笔记本电脑时尝试一下您的建议。我的错是我尝试连接不到数据库,但表传递作为参数Driver.getConnection(url)错误的网址(意味着'用户'是位于特定数据库'片段'的表)。所以,解决方法是将URL改为“jdbc:mysql:// localhost:3306/snippet”和statement.executeQuery(“SELECT * FROM users”)。感谢大家! – aime

+0

是的,它是...... –