我是java和sql查询的新手,对于用户连接,我连接到数据库并检查登录是否存在.这是我做的:
requete = "SELECT Login,Password,DroitModifAnnuaire,DroitRecepteurDem,DroitResponsableDem,PiloteIso,Administrateur,DroitNews,DroitTenues,DroitEssai,Nom,Prenom FROM Annuaire WHERE Login='" + (request.getParameter("login") + "'"); instruction = connexion.createStatement(); jeuResultats = instruction.executeQuery(requete); try{ jeuResultats.next(); } catch (SQLException e) { e.printStackTrace(); } if (jeuResultats.next() == false) { loadJSP("/index.jsp", request, reponse); }else { loadJSP("/views/menu.jsp", request, reponse); }
我输入的登录信息很好,但它重定向到我index.jsp
,我有错误:the result set has no current row
我试图搜索这个错误的答案,但我没有找到.那为什么它会归还给我false
?当我这样做时System.out.println(jeuResultats.getString(1));
,打印登录.
jeuResultats.next();
将结果移动到下一行.从第0行开始,即当你调用.next()
它时读取第一行,然后当你再次调用它时,它会尝试读取不存在的第2行.
一些额外的提示,与问题没有直接关系:
Java Docs是启动Java 8 ResultSet的好地方,对于ex,也许 ResultSet.first()
方法可能更适合您的使用.
由于您正在使用资源,请查看try-with-resources语法.官方教程是一个很好的起点.
另请参阅准备好的声明vs Statement.同样,官方指南是一个很好的起点