Java sql用户类
可能重复:Java sql用户类,java,sql,jdbc,Java,Sql,Jdbc,可能重复: 看看我的代码。怎么了?输出为“未找到用户” package it.unitn.ing.guide; 导入java.sql.Connection; 导入java.sql.DriverManager; 导入java.sql.ResultSet; 导入java.sql.Statement; 导入java.util.ArrayList; 公共类登录{ 私有静态语句stm=null; 私有静态结果集rs=null; 私有静态连接con=null; 私有静态int i; 私人it.unitn.
看看我的代码。怎么了?输出为“未找到用户”
package it.unitn.ing.guide;
导入java.sql.Connection;
导入java.sql.DriverManager;
导入java.sql.ResultSet;
导入java.sql.Statement;
导入java.util.ArrayList;
公共类登录{
私有静态语句stm=null;
私有静态结果集rs=null;
私有静态连接con=null;
私有静态int i;
私人it.unitn.ing.guide.User;
私有用户集;
公共用户身份验证(字符串电子邮件、字符串密码、int i){
试一试{
ArrayList用户_set=新建ArrayList();
con=DriverManager.getConnection(“jdbc:mysql://localhost/mydb“,”根“,”根“);
stm=con.createStatement();
rs=stm.executeQuery(“从用户、角色中选择*(User.id=Role.id)和(User.email='“+email+”)”;
while(rs.next()){
while(rs.next()){
用户=新用户();
user.setAddress(rs.getString(“”);
user.setCountry(rs.getString(“”);
user.setCreatedBy(rs.getString(“”);
user.setEMail(rs.getString(“”);
user.setId(rs.getInt(“”);
user.setIsLocked(rs.getString(“”);
user.setLastLoginDate(rs.getDate(“”);
user.setName(rs.getString(“”);
user.setPassword(rs.getString(“”);
user.setPasswordFormat(rs.getString(“”);
user.setPasswordFormat(rs.getString(“”);
user.setPasswordSalt(rs.getString(“”);
user.setPhoneNumber(rs.getInt(“”);
user.setPhoneNumberNull(rs.getBoolean(“”);
user.setRegistrationDate(rs.getDate(“”);
user.setRoleId(rs.getInt(“”);
user.setUserName(rs.getString(“”);
用户设置添加(用户);
}
}
}catch(异常sqlEx){
System.out.println(“sqlexecuteException:+sqlEx.toString());
}
返回用户设置;
}
公共静态void main(字符串[]args)引发异常{
LoginDao LoginDao=新LoginDao();
User User=loginDao.authentication(“rashed”,“rashed”,i);
如果(用户!=null){
System.out.println(user.getId());
}否则{
System.out.println(“未找到用户”);
}
}
}
好吧,假设您的查询是正确的,并且您的表中只有一个用户对应于指定的电子邮件,您将得到一个返回的结果,但您将使用双while循环跳过它。删除最外层的while循环,它应该可以工作。您的authenticate方法应该返回用户的ArrayList,而您主要是将其分配给单个用户对象。
从authenticate方法返回的用户_集是私有实例变量user_集,该变量为NULL 这段代码甚至没有编译,这也让人怀疑。我有一个相同的java用户类和jdbc用户类命名冲突。那么我如何解决呢?要么使用完全限定路径(包括包名),比如foo.bar.User,要么必须更改类的名称之一,我必须更改哪个类名?您可以更改自定义java用户类,或者使用完全限定路径,比如my.package.User User=new my.package.User();我是这样工作的,但不幸的是结果是一样的。。。
package it.unitn.ing.guide;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;
import java.util.ArrayList;
public class LoginDao {
private static Statement stm = null;
private static ResultSet rs = null;
private static Connection con = null;
private static int i;
private it.unitn.ing.guide.User user;
private User user_set;
public User authenctication(String eMail, String password, int i) {
try {
ArrayList<User> user_set = new ArrayList<User>();
con = DriverManager.getConnection("jdbc:mysql://localhost/mydb", "root", "root");
stm = con.createStatement();
rs = stm.executeQuery("SELECT * FROM User,Role WHERE (user.id=role.id) AND (user.email='" + eMail + "')");
while (rs.next()) {
while (rs.next()) {
User user = new User();
user.setAddress(rs.getString(""));
user.setCountry(rs.getString(""));
user.setCreatedBy(rs.getString(""));
user.setEMail(rs.getString(""));
user.setId(rs.getInt(""));
user.setIsLocked(rs.getString(""));
user.setLastLoginDate(rs.getDate(""));
user.setName(rs.getString(""));
user.setPassword(rs.getString(""));
user.setPasswordFormat(rs.getString(""));
user.setPasswordFormat(rs.getString(""));
user.setPasswordSalt(rs.getString(""));
user.setPhoneNumber(rs.getInt(""));
user.setPhoneNumberNull(rs.getBoolean(""));
user.setRegistrationDate(rs.getDate(""));
user.setRoleId(rs.getInt(""));
user.setUserName(rs.getString(""));
user_set.add(user);
}
}
} catch (Exception sqlEx) {
System.out.println("sqlexecuteException: " + sqlEx.toString());
}
return user_set;
}
public static void main(String[] args) throws Exception {
LoginDao loginDao = new LoginDao();
User user = loginDao.authenctication("rashed", "rashed", i);
if (user != null) {
System.out.println(user.getId());
} else {
System.out.println("No user Found");
}
}
}