如何在以下代码中获取 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)
做:
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 个结果!