【问题标题】:How to connect a Java application to db4free.net using JDBC?如何使用 JDBC 将 Java 应用程序连接到 db4free.net?
【发布时间】:2019-08-04 11:25:23
【问题描述】:

我正在做一个大学项目,我们必须构建一个功能齐全的 Java 应用程序,并配备一个使用 JDBC 的基本用户登录系统。

基本用户登录系统在通过 localhost 在 XAMPP 的 MariaDB MySQL 分支上使用时可以正常工作。

显然,系统无法在这个特定网络之外工作,所以我四处寻找允许我随时在线托管 MySQL 数据库的方法,所以无论我去哪里,这个基本的用户登录系统都可以工作并且可以向任何感兴趣的人展示。

然后我找到了 db4free.net,到目前为止一切正常 - PHPMyAdmin 工作正常,我成功地使用用户名和密码将数据库从 localhost 版本导出和导入到 db4free 版本。

但我在如何将我的应用程序实际指向连接到 db4free 的系统以便登录系统按预期工作时遇到了麻烦。

这是处理连接的“连接模块”Java 类:

package com.fixer.dal;

import java.sql.*;

public class Connection_Module {
    public static Connection connector(){
        java.sql.Connection cnx = null;
        String driver = "com.mysql.jdbc.Driver";
        String url = "jdbc:mysql://db4free.net:3306/db_fixer";
        String user = "myuser";
        String password = "mypassword";

        try {
            Class.forName(driver);
            cnx = DriverManager.getConnection(url, user, password);
            return cnx;
        } catch (Exception e) {
            return null;            
        }
   }
}

下面是检查数据库的函数,以查看用户名和密码是否与记录的数据匹配(如果匹配,则关闭登录屏幕并打开“主”屏幕):

Connection cnx = null;
PreparedStatement pst = null;
ResultSet rs = null;

public void login(){

    String sql = "select * from usertable where username=? and password=?";
    try {
        pst = cnx.prepareStatement(sql);
        pst.setString(1, Screen_Login_Username_Field.getText());
        pst.setString(2, Screen_Login_Password_Field.getText());
        rs = pst.executeQuery();
        if(rs.next()){
            Screen_Main Main = new Screen_Main();
            Main.setVisible(true);
            this.dispose();
            cnx.close();
        }else{
            JOptionPane.showMessageDialog(null, "Invalid user or password.");
        }
    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, e);
    }

}

这主要是我的问题。 db4free.net 给了我一个主机(“db4free.net”)和一个端口(“3306”),但我不知道它们到底去了哪里。根据此处的其他问题,我尝试了一些方法让它工作,但没有一个成功地将我连接到他们系统上的数据库。

我做错了什么?

【问题讨论】:

  • 不要像你正在做的那样吞下异常,至少记录它们或将它们写到错误中(使用e.printStackTrace()),这样你(和我们)就知道出了什么问题。请使用实际的异常堆栈跟踪更新您的问题。

标签: java mysql database jdbc


【解决方案1】:

我刚刚在 db4free.com 中创建了一个数据库(第一次)并使用了:

  1. MySQL 8.x JDBC 驱动(我用的是 JDBC 驱动 8.0.11)。

  2. 网址是:

jdbc:mysql://db4free.net:3306/数据库名称

然而,在 MySQL 8.x 中,最好添加以下参数以避免处理大量警告:

jdbc:mysql://db4free.net:3306/数据库名称?useUnicode=true&useJDBCCompliantTimezoneShift=true&useLegacyDatetimeCode=false&serverTimezone=UTC&useSSL=false

它立刻就像一个魅力。您确认他们发送的电子邮件了吗?您的帐户是否有效?您使用的是 JDBC 驱动程序 8.x 吗?

【讨论】:

  • 我确实确认了他们发送给我的电子邮件,我的帐户处于活动状态,但我使用的是旧版本的 JDBC,因为即使有新版本,老师也这么说。但无论如何,它工作!谢谢!!
  • 仍然无法正常工作,并且仅适用于 db4free。在这里失去理智。
  • @m4heshd 服务有些不稳定。也许它在一天中的某些时候效果很好,而在其他时候效果不佳。刚连上它,花了大约 3 分钟,只是为了连接...
  • 感谢@TheImpaler 的回复。实际上,由于某些奇怪的原因,我使用的是旧版本的 MySQL 连接器,它几乎适用于除 db4free 之外的所有其他服务提供商。更新它解决了我的问题。也不需要使用端口号。不过,连接确实需要几分钟的时间。
猜你喜欢
  • 2017-03-17
  • 1970-01-01
  • 2014-09-03
  • 2014-03-31
  • 1970-01-01
  • 2016-01-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多