我创建了一个方法,它应该从我的数据库返回一个单元格(它是一个 varchar 变量)并将其分配给一个字符串。然后调用另一个方法,该方法采用该 String 并将变量分配给 User 对象,然后将其添加到数组列表中。 SQL 查询语句在 PHPMyAdmin 中工作正常,但在 Java 中,该方法会一直运行到 System.out.println("Getting follower...");
然后由于某种原因它停止工作。我不明白它,因为我已经使用此方法中的代码来检索程序其他部分中的不同变量,没有任何问题,但每当我尝试从数据库中获取这个变量时,它都无法正常工作。
预先感谢您的所有帮助。
public ArrayList<User> returnFollowers(){
ArrayList<User> userArray = new ArrayList<User>();
User user = new User();
try{
Class.forName("com.mysql.jdbc.Driver");
statement = connection.createStatement();
result = statement.executeQuery("SELECT Follower FROM User_Followers WHERE Username = 'Apple123'");
if(!result.next()){
System.out.println("No results found");
}
else{
while(result.next()){
}
System.out.println("Getting followers...");
String userID = result.getString("Follower");
user.createUser(userID);
userArray.add(user);
}
}
catch(ClassNotFoundException error){
System.out.println("Error: " + error.getMessage());
}
catch(SQLException error){
System.out.println("Error " + error.getMessage());
}
finally{
if(connection != null){
try{
connection.close();
}
catch(SQLException ignore){
}
}
if(statement != null){
try{
statement.close();
}
catch(SQLException ignore){
}
}
}
return userArray;
}
最佳答案
第一个
while
循环为空第二个问题是您已经在
if
子句中调用的result.next()
。现在您在
while
子句中再次调用result.next()
,因此第一条记录已被跳过。在这种情况下,请更改
do-while
中的while
循环。
这样做:
if(!result.next()){
System.out.println("No results found");
}else{
do{
System.out.println("Getting followers...");
String userID = result.getString("Follower");
user.createUser(userID);
userArray.add(user);
}while(result.next());
}
关于java - 结果集结束后出现 JDBC 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24791197/