为什么你认为这个函数总是给我? 使用另一个具有相同代码结构的登录程序,它可以很好地工作。 我的DBURL是jdbc:mysql:// localhost:8889 / database
public String retrieveUserPassword(String userName, String password) {
String query = "SELECT UserPassword FROM Access where UserName='"+userName+"'";
String dbresult=null; //this might be the problem, but I must define it
try {
Class.forName("com.mysql.jdbc.Driver");
}catch (ClassNotFoundException ex1) {
System.out.println("Driver could not be loaded: " + ex1);
Logger.getLogger(DatabaseModel.class.getName()).log(Level.SEVERE, null, ex1);
}
try {
//These are private variables declared at the top of the class
//and used by various functions
con = DriverManager.getConnection(DatabaseURL, userName, password);
st = con.createStatement();
rs = st.executeQuery(query);
if(rs.next()){
dbresult= rs.getString(3);
}
}catch (SQLException e) {
e.printStackTrace();
}
return dbresult;
}
Access表由三列组成: UserID,UserName,UserPassword
答案 0 :(得分:7)
java.sql.SQLException:拒绝用户&root;' @' localhost' (使用密码:是)
正如您所提到的,问题在于与数据库本身建立连接。声明
con = DriverManager.getConnection(DatabaseURL, userName, password);
正在抛出正在被抓住的异常
catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
之后您将初始化为dbresult
的{{1}}返回(您必须将其作为本地变量)。所以问题是由于身份验证,您无法连接到数据库。
在您的计算机上(在本例中为localhost)从控制台
运行以下命令null