import java.sql.*;
public class Connet {
         public static void main(String[] args) {
String Driver="com.mysql.jdbc.Driver";
String url="jdbc:mysql://localhost:3306/library";
String  user="root";  
String  password="123456"; 
Statement stmt; ResultSet res;
try
{
Class.forName(Driver);
}
catch(Exception e)
{
System.out.println("无法加载驱动程序"+Driver);
}
try
{
Connection con=DriverManager.getConnection(url,user,password);
stmt=con.createStatement();
res=stmt.executeQuery("select * from books");
while(res.next())
{
String name=res.getString("name");
System.out.println(name);
}
res.close();
}
catch(SQLException ee)
{
System.out.println("连接失败");
}
}
}我已经加载了Mysql的驱动包,并且系统也没报错,就是显示“连接失败”,无法显示要查询的内容。这是为什么呢?用的是Myeclipse6.0.1版本的。

解决方案 »

  1.   

    把exception.printStacktrace()一下,看看详细的错误信息。
      

  2.   

    如1楼所说,别自己把异常通过打印一句话给处理了,ee.printStacktrace()打印下错误信息。
      

  3.   

    打印的错误信息如下:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failureThe last packet successfully received from the server was 1,252,329,813,046 milliseconds ago.  The last packet sent successfully to the server was 0 milliseconds ago.
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2214)
    at com.mysql.jdbc.ConnectionImpl.<init>(ConnectionImpl.java:773)
    at com.mysql.jdbc.JDBC4Connection.<init>(JDBC4Connection.java:46)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
    at com.mysql.jdbc.ConnectionImpl.getInstance(ConnectionImpl.java:352)
    at com.mysql.jdbc.NonRegisteringDriver.connect(NonRegisteringDriver.java:282)
    at java.sql.DriverManager.getConnection(DriverManager.java:582)
    at java.sql.DriverManager.getConnection(DriverManager.java:185)
    at Connet.main(Connet.java:21)
    Caused by: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException: Communications link failureThe last packet successfully received from the server was 1,252,329,813,046 milliseconds ago.  The last packet sent successfully to the server was 0 milliseconds ago.
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
    at com.mysql.jdbc.SQLError.createCommunicationsException(SQLError.java:1074)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:341)
    at com.mysql.jdbc.ConnectionImpl.createNewIO(ConnectionImpl.java:2137)
    ... 12 more
    Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.PlainSocketImpl.socketConnect(Native Method)
    at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:333)
    at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:195)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:182)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366)
    at java.net.Socket.connect(Socket.java:519)
    at java.net.Socket.connect(Socket.java:469)
    at java.net.Socket.<init>(Socket.java:366)
    at java.net.Socket.<init>(Socket.java:209)
    at com.mysql.jdbc.StandardSocketFactory.connect(StandardSocketFactory.java:253)
    at com.mysql.jdbc.MysqlIO.<init>(MysqlIO.java:290)
    ... 13 more
      

  4.   

    可能是mysql的访问权限问题,你要设定一下mysql配置
      

  5.   

     Connection con=DriverManager.getConnection(url+"?user="+user+"&password="+password);你再试试看。反正估计是你的这个错误了,我也不大记得应该是端口在前还是在后了,还有你的端口自己设置过了?没用默认的8080啊
      

  6.   

    楼上,谁告诉过你mysql的默认端口是:8080???第一:
    String Driver="com.mysql.jdbc.Driver";
    改成
    String Driver="org.gjt.mm.mysql.Driver";试试。第二:
    你用的windows系统吗,要在防火墙设置里加一个例外:为3306端口加一个例外。
      

  7.   

    把关键的异常贴到GOOGLE中,通常会有解决办法的
      

  8.   

    驱动包的路径好像要加,不然直接用myeclipse连接数据库的,不要用代码加载了
      

  9.   

    /*
     * 创建日期 2007-7-25
     *
     * TODO 要更改此生成的文件的模板,请转至
     * 窗口 - 首选项 - Java - 代码样式 - 代码模板
     */
    package sql;
    /**
     * @author 
     * 
     * TODO 要更改此生成的类型注释的模板,请转至 窗口 - 首选项 - Java - 代码样式 - 代码模板
     */
    import java.sql.*;/**
     * @author
     */
    public class SqlS { private PreparedStatement prepstmt; private ResultSet rs; private Connection conn;// String userName="game";
    //
    //// 密码
    //
    // String userPasswd="ejoygame";
    String userName="root";// 密码 String userPasswd="111";

    // 数据库名 String dbName="game";// 表名 String tableName="biao"; private SqlS(String sql) {
    try {
    // 联结字符串 String url="jdbc:mysql://localhost/"+dbName+"?user="+userName+"&password="+userPasswd+"&useUnicode="+true+"&characterEncoding=UTF-8"; Class.forName("com.mysql.jdbc.Driver").newInstance();
    // String dbUrl =
    // "jdbc:jtds:sqlserver://localhost:1433/j2eeone;user=sa;password=caicaibao";
    conn = DriverManager.getConnection(url);
    prepstmt = conn.prepareStatement(sql,
    ResultSet.TYPE_SCROLL_INSENSITIVE,
    ResultSet.CONCUR_READ_ONLY); } catch (Exception e) {
    System.out.println("SqlS(String): " + e.toString());
    }
    } /**
     * 用静态工厂方法代替构造函数
     * 
     * @param sql
     *            需要运行的sql语句
     * @return Sql Server类,用于封装连接数据库的方法。
     */
    public static SqlS getInstance(String sql) {
    SqlS sqlS = new SqlS(sql);
    if (sqlS == null) {
    System.out.println("申请不到连接了,产生了一个空连接");
    }
    return sqlS;
    } /**
     * 运行sql语句,常用于select语句
     * 
     * @return 查询的结果集
     */
    public ResultSet executeQuery() { try {
    rs = prepstmt.executeQuery();
    } catch (SQLException e) {
    System.out.println("executeQuery(): " + e.toString());
    }
    return rs;
    } /**
     * 运行sql语句,常用于update,delete语句,无返回值
     */
    public int executeUpdate() {
    int row = -1;
    try {
    row = prepstmt.executeUpdate();
    } catch (SQLException e) {
    System.out.println("executeUpdate(): " + e.toString());
    }
    return row;
    } /**
     * 调用prepareStatement的setInt方法
     * 
     * @param index
     *            索引
     * @param value
     *            值
     */
    public void setInt(int index, int value) {
    try {
    prepstmt.setInt(index, value);
    } catch (SQLException e) {
    System.out.println("setInt(int, int): " + e.toString());
    }
    } /**
     * 调用prepareStatement的setLong方法
     * 
     * @param index
     *            索引
     * @param value
     *            值
     */
    public void setLong(int index, long value) {
    try {
    prepstmt.setLong(index, value);
    } catch (SQLException e) {
    System.out.println("setLong(long, int): " + e.toString());
    }
    } /**
     * 调用prepareStatement的setString方法
     * 
     * @param index
     *            索引
     * @param value
     *            值
     */
    public void setString(int index, String value) {
    try {
    prepstmt.setString(index, value);
    } catch (SQLException e) {
    System.out.println("setString(int, String): " + e.toString());
    }
    } /**
     * 调用prepareStatement的setString方法
     * 
     * @param index
     *            索引
     * @param value
     *            值
     */
    public void setDate(int index, java.sql.Date value) {
    try {
    prepstmt.setDate(index, value);
    } catch (SQLException e) {
    System.out.println("setDate(int, Date): " + e.toString());
    }
    } /**
     * 同stmt.setTimestamp(int i,Timestamp j)
     * 
     * @param index
     *            索引
     * @param value
     *            值
     */
    public void setTimestamp(int index, java.sql.Timestamp value) {
    try {
    prepstmt.setTimestamp(index, value);
    } catch (SQLException e) {
    System.out.println("setTimestamp(int, java.sql.Timestamp): "
    + e.toString());
    }
    } public void close() {
    try {
    if (rs != null) {
    rs.close();
    }
    if (prepstmt != null) {
    prepstmt.close();
    }
    if (conn != null) {
    conn.close();
    // dbm.returnConnection(conn);
    }
    } catch (SQLException e) {
    System.out.println("close(): " + e.toString());
    }
    } public static void main(String[] args) {
    int addtime = 0;
    String sql = "SELECT * FROM user";
    System.out.println(sql);
    SqlS sqlS = SqlS.getInstance(sql);
    try {
    ResultSet rs = sqlS.executeQuery();
    while (rs.next()) { addtime = rs.getInt(1);
    System.out.println(rs.getInt(1));
    System.out.println(rs.getString(2));
    }
    } catch (Exception e) {
    e.printStackTrace();
    } finally { sqlS.close();
    }
    // boolean b = false;
    // String updateSql = "update biao set name='fffffff' where id=2";
    //
    // SqlS sqlS1 = SqlS.getInstance(updateSql);
    //
    // try {
    // int i=sqlS1.executeUpdate();
    // if (i==1) {
    // b=true;
    // }
    // } catch (Exception e) {
    // e.printStackTrace();
    // } finally {
    // sqlS1.close();
    // }
    }
    }
      

  10.   

    是不是没有配置MYSQL的远端连接许可?
      

  11.   

    什么样的驱动对应什么样的字符串 不要写错了
    还有就是。MySQL 权限问题。。