当前位置: 首页 > 面试题库 >

“ if(rs.next())”是什么意思?

夹谷硕
2023-03-14
问题内容

我目前遇到错误,

java.sql.SQLException: Method 'executeQuery(String)' not allowed on prepared statement.

因为我在用

PreparedStatement stmt = conn.prepareStatement(sql);

并且也有

ResultSet rs = stmt.executeQuery(sql);

在我的代码中。

现在,我需要删除ResultSet行,但这使我不得不处理以下代码:

if (rs.next()) {
    messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("login.successful"));
    request.getSession(true).setAttribute("USERNAME", rs.getString("USERNAME"));
    request.getSession(true).setAttribute("BALANCE", rs.getString("BALANCE"));
    request.setAttribute("msg", "Logged in successfully");

我不确定我是否完全理解

 if (rs.next())

做。有人可以向我解释此代码吗?如果我对此有更好的了解,我相信我将对如何使用PreparedStatement结果以及用于rs的逻辑进行处理有一个更好的主意。同样,对改变这种逻辑的任何帮助也将不胜感激。


问题答案:

对于具体问题SQLException,您需要更换

ResultSet rs = stmt.executeQuery(sql);

通过

ResultSet rs = stmt.executeQuery();

因为您使用的是PreparedStatement子类而不是Statement。使用时PreparedStatement,您已经将SQL字符串传递给Connection#prepareStatement()。您只需要在其上设置参数,然后executeQuery()直接调用方法,而无需重新传递SQL字符串。

也可以看看:

  • JDBC教程-使用准备好的语句

对于具体的问题rs.next(),它将光标从数据库中移至结果集的下一true行,否则返回false。与if语句(而不是while)结合使用,意味着程序员仅对第一行(即第一行)期望或感兴趣。

也可以看看:

  • ResultSet#next()方法的Javadoc
  • SQL问题,java中的ResultSet


 类似资料:
  • 问题内容: 在java int,float等中,是原始类型。如果我们需要将其与泛型一起使用,则使用包装器类。但是,以下声明在Java中仍然有效, 即使它是原始类型,如何调用? 问题答案: 原始对象成为对象 对于基元,在相应的包装器类中有一些名为TYPE的常量的Class对象可用-即,int.class更改为java.lang.Integer.TYPE。对于其他类型,编译器在正在编译的类中创建一个私

  • 问题内容: 我目前正在(恢复)使用EJB的速度,而当我离开时,它发生了巨大的变化(到目前为止更好)。但是,我遇到了一个我正在苦苦挣扎的概念,并且想更好地理解它,因为它似乎在我们的代码中使用了(我工作的地方,而不是我和我所有的声音)。 这是我在一本书中找到的示例。这是显示如何使用注释的示例的一部分: 的类是一个相当简单的类来定义对:和。 哦,我从Rubinger&Burke的O’Reilly的Ent

  • 问题内容: 什么是POSIX?我已阅读Wikipedia文章,并且每次遇到该术语时都会阅读。事实是我从来没有真正了解过它是什么。 有人可以通过解释“ POSIX的需求”来向我解释吗? 问题答案: POSIX是IEEE指定的一系列标准,用于阐明和统一Unix- y操作系统提供的应用程序编程接口(以及附属问题,例如命令行外壳实用程序)。当您编写依赖于POSIX标准的程序时,可以肯定地将它们轻松移植到大

  • 本文向大家介绍NULL是什么意思?相关面试题,主要包含被问及NULL是什么意思?时的应答技巧和注意事项,需要的朋友参考一下 NULL这个值表示UNKNOWN(未知):它不表示“”(空字符串)。 对NULL这个值的任何比较都会生产一个NULL值。 您不能把任何值与一个 NULL值进行比较,并在逻辑上希望获得一个答案。 使用IS NULL来进行NULL判断

  • 问题内容: 我是接口的新手,并尝试通过github执行SOAP请求 我不明白 在此代码中: 我已经观察到相同的语法 但不知道通过什么实现 问题答案: 您可以参考文章“ 如何在Go中使用接口 ”(基于“ Russ Cox对接口的描述 ”): 什么 是 接口? 接口是两件事: 这是一组方法, 但这也是一种 该 类型的 空接口 是没有方法的接口。 由于没有Implements关键字,所有类型都至少实现了

  • 问题内容: 这是什么意思? 问题答案: 在jQuery中,属性只是该属性的别名。 标识符(或)只是一个 构造函数 ,使用该标识符创建的所有实例都从构造函数的原型继承。 一个简单的构造函数: 一个类似于jQuery体系结构的简单结构: