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

在Java程序中使用Resultset

能翔宇
2023-03-14
问题内容
Resultset rs=stmt.executeQuery("select count(*) from feedsca group by score order by score");

使用上面的上述Java代码,正在从名为feedsCA的表中检索行数。

尝试使用rs.getInt(1),rs.getInt(2),rs.getInt(3)检索计数时,我以如下错误结束,

Exception in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: The result set has no current row.
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source)
    at com.microsoft.sqlserver.jdbc.SQLServerResultSet.verifyResultSetHasCurrentRow(Unknown Source)
    at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getterGetColumn(Unknown Source)
    at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getInt(Unknown Source)
    at SimpleMail.main(SimpleMail.java:151)

更新:

上述异常已解决。

但是我得到以下异常,我不知道原因。请指教。

Exception in thread "main" com.microsoft.sqlserver.jdbc.SQLServerException: The index 2 is out of range.
    at com.microsoft.sqlserver.jdbc.SQLServerException.makeFromDriverError(Unknown Source)
    at com.microsoft.sqlserver.jdbc.SQLServerResultSet.verifyValidColumnIndex(Unknown Source)
    at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getterGetColumn(Unknown Source)
    at com.microsoft.sqlserver.jdbc.SQLServerResultSet.getInt(Unknown Source)
    at SimpleMail.main(SimpleMail.java:152)

这就是我更新程序的方式。为我找到一种合理的方式,因为我可以很好地理解下面的循环无法按要求工作。

rs=stmt.executeQuery("select count(*) from feedsca group by score order by score");
while(rs.next()){
pw.printf(rowFormat, rs.getLong(1),"0",rs.getLong(2),rs.getLong(3));}

问题答案:

您必须将结果集的光标移动到行- resultSet.first()resultSet.next()。最初,光标指向第一行之前,因此是您的例外。

当您要迭代时ResultSet

while(rs.next()) {
    ...
}

更新: 对于您的第二个问题-(如卡萨布兰卡所指出的),您的查询似乎仅返回一列,而您要求的是第二列和第三列-找不到它们。请注意,in
rs.getX(idx) idx是列,而不是行。



 类似资料:
  • 我尝试在JAVA代码中调用MessageBoxA函数。以下方法有什么问题,以至于我的程序抛出了很多错误? 1-st: run:线程“main”java.lang.ClassFormatError:java.lang.ClassLoader的类文件加载/库/MessageBox中的本机或抽象方法中的代码属性。java.lang.ClassLoader.defineClass(ClassLoader.

  • 问题内容: 我知道如何通过命令行使用sqoop。但是不知道如何使用Java程序调用sqoop命令。谁能提供一些代码视图? 问题答案: 您可以通过在类路径中包含sqoop jar并调用该方法,从Java代码内部运行sqoop 。您将必须创建所需的参数才能以编程方式像命令行一样(例如,等)进行缩放。 请注意以下几点: 确保sqoop工具名称(例如,导入/导出等)是第一个参数。 请注意类路径的排序-执行

  • 我编写了一个由五个。py脚本文件组成的Python程序。我希望从Java应用程序中执行这些python脚本的主要部分。 我有什么选择?使用PythonInterperter不起作用,例如,模块不能从Jython中加载(我不希望用户为这些依赖项的工作而确定他的Python路径)。 我使用Jython的CompileAll将整个文件夹编译为。class文件。我能以某种方式嵌入这些。class文件以从J

  • 问题内容: 我已经从http://code.google.com/p/facebook-java- api/ 下载了facebook-java- api-3.0.2-bin 以连接到脸书。我想在我的Java应用程序中使用此api连接Facebook。我正在为此目的开发桌面应用程序。我已经在Face book上创建了帐户并注册为开发人员。 是否可以从我的Java应用程序连接Facebook? 如果是

  • 我需要你的帮助:我必须读卡与RFID阅读器,在我的java应用程序。最后,当我点击按钮“Attributer Numéro RFID”时,它会读取我的RFID阅读器(型号:OCS ACRurw),然后将十六进制值插入jtextfield文本区域。(一开始,jTable会得到我数据库中每个用户的姓和名。这是我项目的代码。如果有人知道我点击“Attributer Numéro RFID”按钮时如何读取

  • 问题内容: 我应该做的是创建一个Java存储过程,然后再从Java程序中调用它。 我在执行JAVA程序时遇到问题-带有1个参数的JDBCPiemers(如下)(我需要弄清楚String Nosaukums)。错误:“无效的列名”。 调用ORACLE中的过程可以正常工作。 这是我已存储在数据库中的存储过程。 我用oracle创建了以下程序包。 这是我在其中调用该过程的Java程序。但是我无法使它工作