首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用Java访问在线数据库

用Java访问在线数据库
EN

Stack Overflow用户
提问于 2012-05-03 20:21:38
回答 5查看 18.5K关注 0票数 1

我编写了一个访问数据库的Java程序。在开发阶段,我使用了一个本地数据库(带有MySQL的XAMPP),但是当我尝试访问两个不同的联机数据库(一个商业数据库和一个免费数据库)时,我在这两种情况下都收到了以下例外:

SQLException:通信链路故障 最后一次成功发送到服务器的数据包是0毫秒前。驱动程序尚未收到来自服务器的任何数据包。

我在使用PHP时没有遇到任何问题。

这是我的密码:

代码语言:javascript
复制
private String user = "user1";
private String pass = "pass1";
private String dbClass = "com.mysql.jdbc.Driver";
private String dbDriver = "jdbc:mysql://db4free.net:3306/DBNAME";
private Connection conn = null;

public boolean connect() {
    boolean done = false;
    //load driver
    try {
        Class.forName(dbClass).newInstance();
        System.out.println("driver loaded"); // THIS IS BEING RETURNED
    } catch (ClassNotFoundException | InstantiationException | IllegalAccessException ex) {
        System.err.println(ex);
    }
    // Connection
    try {
        conn = DriverManager.getConnection(dbDriver, user, pass);
        System.out.println("connected"); // THIS IS NOT BEING RETURNED
        done = true;
    } catch (SQLException ex) {
        System.out.println("SQLException: " + ex.getMessage());
    }
    return done;
}
EN

回答 5

Stack Overflow用户

发布于 2012-05-03 20:28:00

MySQL数据库不仅允许用户使用特定密码进行连接,而且还允许用户使用IP范围或地址进行连接。

http://dev.mysql.com/doc/refman/5.1/en/create-user.html

CREATE USER 'jeffrey'@'127.0.0.1' IDENTIFIED BY 'mypass';

因此,在线数据库可能不允许该用户从您的IP地址或块连接。

票数 0
EN

Stack Overflow用户

发布于 2012-05-03 20:50:26

您的代码在db4free上新创建的帐户上运行得很好:

检查以下内容:

应该显示您的公共ip或单一%。

您的用户名和密码是正确的,也将验证您的帐户是确认的。

如果" DBNAME“是正确的,请登录到”phpMyAdmin:“在db4free.net上,DBNAME将位于"information_schema”的左边。

最后,您的本地防火墙不会阻止您:

代码语言:javascript
复制
telnet db4free.net 3306 (from a command line/prompt)

(如果您收到提示,防火墙将允许您通过。)

票数 0
EN

Stack Overflow用户

发布于 2012-05-03 20:59:08

您的代码中没有提到端口号。下面是工作代码的示例。

代码语言:javascript
复制
  try {
            Class.forName("com.mysql.jdbc.Driver");
        } catch (ClassNotFoundException e) {
            System.out.println(" Unable to load driver. ");
        }
        String url = "jdbc:mysql://DBSERVERNAME:3306/DATABASENAME";
        String username = "user";
        String password = "pass";
        try {
            this.conn = DriverManager.getConnection(url, username, password);
             System.out.println(" Connection Established. ");
        } catch (SQLException e) {
            System.out.println(" Error connecting to database:  "
                    + e);
        }

然而,造成这一问题的原因可能有几个。

  • 如果主机(您正在运行此代码的机器)具有访问MySQL服务器的权限,请签入您的MySql服务器设置?
  • 验证JDBC,检查port#,ip地址/主机名
  • 检查是否有任何东西(如防火墙、代理)阻塞从主机到db服务器的连接。
  • 尝试从主机上敲击DB服务器

类似帖子:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:Communications链路故障

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10438773

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档