mysql 版本 5.1.30 win32
myeclipse 7.5链接远程服务器的数据库时报错
 
sql exception:Communications link failureLast packet sent to the server was 0 ms ago.
false
代码:package cn.wlsh.db;import java.sql.*;public class DBManager { // 用户名 private String user = ""; // 密码 private String password = ""; // 主机 private String host = ""; // 数据库名字 private String database = ""; private static DBManager dbm = null; /*
 * 
 * private String
 * url="jdbc:mysql://"+host+"/"+"useUnicode=true&characterEncoding=GB2312";
 */ private String url = ""; private Connection con = null; Statement stmt; /**
 * 
 * 私有的构造方法,保证外部不能实例化,只能由DBManager自己能提供自
 * 
 * 己的实例,并且只能有一个。
 * 
 * 根据主机、数据库名称、数据库用户名、数据库用户密码取得连接。
 * 
 * @param host
 *            String
 * 
 * @param database
 *            String
 * 
 * @param user
 *            String
 * 
 * @param password
 *            String
 */
private DBManager(String host, String database, String user, String password) { this.host = host; this.database = database; this.user = user; this.password = password; // 显示中文 this.url = "jdbc:mysql://" + host + "/" + database + "?zeroDateTimeBehavior=convertToNull"; try { Class.forName("org.gjt.mm.mysql.Driver"); } catch (ClassNotFoundException e) { System.err.println("class not found:" + e.getMessage()); } try { con = DriverManager.getConnection(this.url, this.user,
this.password);
// 连接类型为ResultSet.TYPE_SCROLL_INSENSITIVE,
// ResultSet.CONCUR_READ_ONLY stmt = con.createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); } catch (SQLException a) {
System.err.println("sql exception:" + a.getMessage()); } } /**
 * 
 * 静态工厂方法,来获得一个DBManager实例
 */ public static DBManager getInstance(String host, String database,
String user, String password) { if (dbm == null) { dbm = new DBManager(host, database, user, password); } return dbm; } /**
 * 
 * 返回取得的连接
 */ public Connection getCon() { return con; } /**
 * 
 * 执行一条简单的查询语句
 * 
 * 返回取得的结果集
 */ public ResultSet executeQuery(String sql) { ResultSet rs = null; try { rs = stmt.executeQuery(sql); } catch (SQLException e) { e.printStackTrace(); } return rs; } /**
 * 
 * 执行一条简单的更新语句 执行成功则返回true
 */ @SuppressWarnings("finally")
public boolean executeUpdate(String sql) { boolean v = false; try { v = stmt.executeUpdate(sql) > 0 ? true : false; } catch (SQLException e) { e.printStackTrace(); } finally {
return v;
}
}
public static void main(String[] args) {
DBManager db=new DBManager("127.0.0.1","mybbs","root","mysql");
String sql="insert into members (fid,username,password,email) values ('9954','aaaa','202CB962AC59075B964B07152D234B70','[email protected]')";
System.out.println(db.executeUpdate(sql));


}
}
<服务器IP 暂用本机IP代替.见谅...>执行main 方法时就报错.  链接本机是没问题的,增删该查都OK  就是链接服务器的时候出这种状况.关于mysql 版本 5.0的也是此状况网上找了许多 也没找到合适的解决办法,  高手谁给指点下?头疼....

解决方案 »

  1.   

    先不用JAVA,直接用MYSQL的命令行工具试一下。以断定是驱动的问题,还是权限/网络的问题。如果是MYSQL本身原因,请参考下贴中的检查方法
    http://topic.csdn.net/u/20090920/22/14d4f597-b7d4-4c24-b0db-abb2956e66c3.html
    mysql   无法联接故障现象及原因
      

  2.   

    参考下,乱码不用管。可能你得host没有端口号?另外你的驱动换一个试试看?还有就是你的服务器允许从远程客户端连接吗?都要确认得。package test.mysql;import java.sql.Connection;
    import java.sql.DriverManager;public class MConnection {
    public static Connection getConn() {
    String URL = "jdbc:mysql://127.0.0.1:3306/test?characterEncoding=utf8";
    String user = "root";
    String password = "mysql";
    Connection connection = null;
    try {
    Class.forName("com.mysql.jdbc.Driver");
    System.out.println("ready!"); connection = DriverManager.getConnection(URL, user, password);
    System.out.println("OK!"); } catch (Exception err) {
    err.printStackTrace();
    return null;
    } return connection;
    }}