我有这个用户类(这是示例的简化版本,真实的有更多参数,但它们的实现方式相同):
public class User {
private int _userID;
private String _fullName;
public User(){
}
public User(int userID, String fullName){
this._userID = userID;
this._fullName = fullName;
}
int getUserID(){
return this._userID;
}
String getFullName(){
return this._fullName;
}
void setUserID(int userID){
this._userID = userID;
}
void setFullName(String fullName){
this._fullName = fullName;
}
}
我想从我的 MS SQL Server 中检索 Android 中此类对象的列表,我在连接器助手类(负责使用 JDBC 与服务器建立连接的类)中使用此方法:
public List<User> getUsers(int ID){
java.sql.ResultSet result = null;
List<User> users = new ArrayList<User>();
User user = new User();
try {
connection = this.getConnection();
if (connection != null) {
//QUERY
String statement = "SELECT * Users WHERE groupID = "
+ ID;
Statement select = connection.createStatement();
//Calls Query
result = select.executeQuery(statement);
while (result.next()){
user.setUserID(result.getInt("UserID"));
user.setFullName(result.getString("FullName"));
System.out.println(result.getString("FullName"));
//Adds to the list
users.add(user);
}
result.close();
result = null;
closeConnection();
}
else {
System.out.println("Error: No active Connection");
}
} catch (Exception e) {
e.printStackTrace();
}
return users;
}
根据我在每次迭代中使用的 System.out.println 从服务器中很好地检索数据,问题是列表总是充满关于我检索的最后一个用户的重复信息,以澄清:
如果我有用户A,B和C,当我读取用户A时,列表具有以下结构:[A],当我读取用户B时,列表是:[B,B],当我读取用户C时:[C,C ,C] 等。所以基本上列表中的所有对象都被最后一个读取的对象覆盖。
我已经为此苦苦挣扎了几个小时,希望有人能发现问题,因为我不能,在此先感谢您的帮助。