使用MSSQL显示数据库中的所有记录

时间:2018-02-21 14:43:52

标签: android sql-server

我创建了一个应用程序,当我点击我的运行按钮时,我得到的一个错误是它只显示我的数据库中的最后一条记录,而我希望它显示所有记录而不只是一条记录。

这是我的代码:

        @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;
    }
}

所以我基本上想要将所有用户名和所有名字一起显示在一起,但它只显示最后一个记录的用户名和名字。我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

因为在while loop中,您将ResultSet中的值放在两个局部变量中。对于每个记录,它将覆盖它。因此,第一行的值会变为变量name1name2。第二行会覆盖变量name1name2中的这些值。这发生在最后一行,即name1name2中的值。

您应该做的是创建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));
 }