JSON对象obj
被插入到JSONArray arr
中,但是当打印数组时,将打印相同的对象以获得ResultSet
的迭代次数。
有人可以告诉我这是什么错误吗?
try {
connection = DriverManager.getConnection(connectionUrl+dbName, userId,password);
statement=connection.createStatement();
statement2=connection.createStatement();
String sql1 ="SELECT * FROM patient_detail where nurseid="+uidd;
resultSet = statement.executeQuery(sql1);
while(resultSet.next())
{
obj.put("fname", resultSet.getString("fname"));
obj.put("lname", resultSet.getString("lname"));
obj.put("pid", resultSet.getString("pid"));
obj.put("gender", resultSet.getString("gender"));
obj.put("dob", resultSet.getString("dob"));
obj.put("appdate", resultSet.getString("appdate"));
obj.put("diseaseid", resultSet.getString("diseaseid"));
list.add(obj);
}
String jsonText1 = JSONValue.toJSONString(list);
connection.close();
}
答案 0 :(得分:1)
在循环中,您在每次迭代中改变相同的对象,然后将相同的对象添加到列表中。您在下一次迭代中对该对象进行的任何更改 对您存储在列表中的对象的更改。因此,最后您的列表包含对同一对象的 n 引用。
要解决此问题,请在每次迭代中创建一个新对象:
public class C {
protected void method(C param) {
super.method(param);
}
}
答案 1 :(得分:1)
我猜你的问题可能是对象“obj”。 尝试在每次迭代中创建新的obj
try {
connection = DriverManager.getConnection(connectionUrl+dbName, userId,password);
statement=connection.createStatement();
statement2=connection.createStatement();
String sql1 ="SELECT * FROM patient_detail where nurseid="+uidd;
resultSet = statement.executeQuery(sql1);
while(resultSet.next())
{
obj = new JSONObject(); // <----
obj.put("fname", resultSet.getString("fname"));
obj.put("lname", resultSet.getString("lname"));
obj.put("pid", resultSet.getString("pid"));
obj.put("gender", resultSet.getString("gender"));
obj.put("dob", resultSet.getString("dob"));
obj.put("appdate", resultSet.getString("appdate"));
obj.put("diseaseid", resultSet.getString("diseaseid"));
list.add(obj);
}
String jsonText1 = JSONValue.toJSONString(list);
connection.close();
}