【发布时间】: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()),这样你(和我们)就知道出了什么问题。请使用实际的异常堆栈跟踪更新您的问题。