Java用户类

我如何解析java用户类和JDBC用户类? 问题是当我用完时输出的是sql中的数据。例如

public User authenctication(String eMail, String password) { try { con = DriverManager.getConnection("jdbc:mysql://localhost/mydb", "root", "root"); stm = con.createStatement(); rs = stm.executeQuery("select * from User,Role where user.id=role.id"); while(rs.next()) { user = new User(); user.setAddress(rs.getString("")); user.setCountry(rs.getString("")); user.setCreatedBy(rs.getString("")); user.setEMail(rs.getString("")); user.setId(rs.getInt("")); } } catch (Exception sqlEx) { System.out.println("sqlexecuteException: " + sqlEx.toString()); } return user; } 

 user = new User(); 

每次为user分配一个新对象时,都会丢失旧对象。 更好的可能性是使用LinkedList:

 List users = new LinkedList(); 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("")); users.add(user); } 

提供类的完全限定名称以避免命名冲突。

对于Ex:

com.me.package.User objUser = new com.me.package.User();

其中User是驻留在com.me.package包中的类

尝试更仔细地查看您的查询,这对我来说似乎不对。

还可以使用Prepared Statement来避免Sql注入

上面的代码似乎是错误的。 您正在尝试创建和初始化同一个对象

 user = new User(); 

结果集一遍又一遍。 而是使用数组列表

 public User authentication(String eMail, String password) { try { ArrayList user_set = new ArrayList(); con = DriverManager.getConnection("jdbc:mysql://localhost/mydb", "root", "root"); stm = con.createStatement(); rs = stm.executeQuery("select * from User,Role where user.id=role.id"); while(rs.next()) { user = new User(); user.setAddress(rs.getString("")); user.setCountry(rs.getString("")); user.setCreatedBy(rs.getString("")); user.setEMail(rs.getString("")); user.setId(rs.getInt("")); user_set.add(user); } } catch (Exception sqlEx) { System.out.println("sqlexecuteException: " + sqlEx.toString()); } return user_set; } 

我想你只想要一个用户登录。为此,你的查询是错误的。 你应该这样做:

 "SELECT * FROM User,Role WHERE (user.id=role.id) AND (user.email='" + eMail + "')" 

这将只为您提供您传递的电子邮件地址的用户。

但是还有另一种方法可以实现您的目标而不会冒SQL注入的风险。 你可以保留你的程序。 您只需在循环中添加一个简单的行,就在右大括号之前:

 if (user.getEMail().equals(eMail)) break; 

该行可以在找到正确的用户后退出循环。 所以你会回来正确的。