私はこのユーザークラスを持っています (これは例の縮小バージョンです。実際のものにはより多くのパラメーターがありますが、それらは同じ方法で実装されています):
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;
}
}
そして、Android でこのタイプのオブジェクトの MS SQL Server からリストを取得したいのですが、コネクタ ヘルパー クラス (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] などです。基本的に、リスト内のすべてのオブジェクトは、最後に読み取ったオブジェクトによって上書きされます。
私はこれに何時間も苦労してきました。私にはできないので、誰かが問題を見つけてくれることを願っています。助けてくれてありがとう。