如何获取ResultSet中的第一个元素

use*_*056 2 java resultset

如何在以下代码中获取 ResultSet 中的第一个元素:

    public List getUserTest(String username, String password) {

    List userList = new ArrayList();


    Connection connection = null;
    String rstring = null;
    Statement stmt = null;///*******
    ResultSet resultSet = null;
    try {

        connection = dataSource.getConnection();
        stmt = connection.createStatement();///*******
        resultSet = stmt.executeQuery("SELECT * FROM users WHERE (username)='" + username + "'"
                + "AND (password)='" + password + "'");///*******

        while (resultSet.next()) {
            UsersTest user = new UsersTest();
            user.setId(resultSet.getString("id"));
            user.setUsername(resultSet.getString("username"));
            user.setPassword(resultSet.getString("password"));
            userList.add(user);
        }


    } catch (SQLException e) {
        System.err.println(e);
    } finally {
        try {

            if (resultSet != null) {
                resultSet.close();
            }

            if (stmt != null) {
                stmt.close();
            }

            if (connection != null) {
                connection.close();
            }
        } catch (SQLException e) {
        }
    }
    return  userList;
}
Run Code Online (Sandbox Code Playgroud)

Rya*_*art 5

ResultSet 的第一个元素是您第一次执行while (resultSet.next())循环时使用的元素,因此其内容用于构建userList.


gla*_*kou 5

做:

resultSet.first()
Run Code Online (Sandbox Code Playgroud)

在此处检查 API:https://docs.oracle.com/javase/7/docs/api/java/sql/ResultSet.html

附:

我认为最好替换:

while (resultSet.next()) {
        UsersTest user = new UsersTest();
        user.setId(resultSet.getString("id"));
        user.setUsername(resultSet.getString("username"));
        user.setPassword(resultSet.getString("password"));
        userList.add(user);
    }
Run Code Online (Sandbox Code Playgroud)

与:(返回对象)

if (!rs.next())
  //No user found.
else {
  UsersTest user = new UsersTest();
  resultSet.first();
  user.setId(resultSet.getString("id"));
  user.setUsername(resultSet.getString("username"));
  user.setPassword(resultSet.getString("password"));
}

return user;
Run Code Online (Sandbox Code Playgroud)

退货清单:(退货清单)

List userList = new ArrayList();

if (!rs.next())
  //No user found.     
else {
  UsersTest user = new UsersTest();
  resultSet.first();
  user.setId(resultSet.getString("id"));
  user.setUsername(resultSet.getString("username"));
  user.setPassword(resultSet.getString("password"));
  userList.add(user) //it will only add one element
}

return userList;
Run Code Online (Sandbox Code Playgroud)

要调用您的方法,请执行以下操作:

UsersTest u = new UserTest();
List l = getUserTest(username, password)

if(l.size > 0)
  u = l.get(0);
else
  System.out.println("Cannot find user"); 
Run Code Online (Sandbox Code Playgroud)

我建议这样做,因为我认为您不会有 2 个结果(列表是不必要的)。您期望得到 0 或 1 个结果!