我创建了一个应用程序,当我点击我的运行按钮时,我得到的一个错误是它只显示我的数据库中的最后一条记录,而我希望它显示所有记录而不只是一条记录。
这是我的代码:
@Override
protected String doInBackground(String... params) {
try {
con = connectionclass();
if (con == null) {
z = "Check Your internet Access!";
} else {
String query = "select * from mo_test";
Statement stmt = con.createStatement();
ResultSet rs = stmt.executeQuery(query);
while (rs.next()) {
name1 = rs.getString("username");
name2 = rs.getString("fName");
}
z = "query successful";
isSuccess = true;
con.close();
}
} catch (Exception ex) {
isSuccess = false;
z = ex.getMessage();
Log.d("Sql error", z);
}
return z;
}
}
所以我基本上想要将所有用户名和所有名字一起显示在一起,但它只显示最后一个记录的用户名和名字。我该如何解决这个问题?
答案 0 :(得分:0)
因为在while loop
中,您将ResultSet
中的值放在两个局部变量中。对于每个记录,它将覆盖它。因此,第一行的值会变为变量name1
和name2
。第二行会覆盖变量name1
和name2
中的这些值。这发生在最后一行,即name1
和name2
中的值。
您应该做的是创建ArrayList
而不是两个变量。在while循环中,将它们添加到这些列表中。
// put this instead of your string name1 and name2 declarations.
ArrayList<string> userNames = new ArrayList<string();
ArrayList<string> firstNames = new ArrayList<string>();
// replace your while loop with this
while (rs.next()) {
userNames.add(rs.getString("username"));
firstNames.add(rs.getString("fName"));
}
现在,您已获得列表中的所有用户名和名字。 您可以使用以下代码打印它们:
for (int i=0; i < userNames.size(); i++){
System.out.println(userNames.get(i));
System.out.println(firstNames.get(i));
}