データベースからの結果を JSONObject に保存しています。私は基本的に、JSONObject に personId を持たせ、各 personId に対して、その人が購入した車のすべての ID (車の ID) のリストと、これらの車のそれぞれの購入日を含めたいと考えています。以下のコードがありますが、1 行の結果しか得られません。私はループがひどいです。明らかにここでポイントがありません。ここで何が間違っているのか、なぜ結果が返ってこないのかを教えてください。出力のイメージを示すために、各 personId に対して 15 以上の carId があり、これらの carId のそれぞれに購入日があります。
public static JSONObject fetchPersonCarInfo(String person) throws SQLException
{
JSONObject personCarInfoObj = new JSONObject();
Connection connection = null;
PreparedStatement statement = null;
ResultSet rs = null;
try {
connection = DriverManager.getConnection("jdbc:myDriver:myDatabase",username,password);
statement = connection.prepareStatement("SELECT personId, carId, purchase_date FROM carz WHERE person = ?");
statement.setString(1, person);
rs = statement.executeQuery();
while(rs.next()) {
if(personCarInfoObj.containsKey(rs.getString("personId")) {
personCarInfoObj.get(rs.getString("personId"));
personCarInfoObj.get(rs.getString("carId"));
personCarInfoObj.get(rs.getString("purchaseDate"));
} else {
personCarInfoObj = new JSONObject();
personCarInfoObj.put("personId",(new String(rs.getString("personId"))));
personCarInfoObj.put("deviceId",(new String(rs.getString("carId"))));
personCarInfoObj.put("deviceCheckinTime",(new Date(rs.getTimestamp("purchaseDate")).getTime())); //not sure how to get timestamp column
}
}
} finally{
statement.close();
rs.close();
connection.close();
}
return personCarInfoObj;
}