ResultSet.get引发java.sql.SQLException:当前光标位置的无效操作

问题描述 投票:0回答:1

这里我拥有一个表名为PDF的derby数据库

而且我有鳕鱼:

*私有静态连接conn = null;

**静态静态语句stmt = null;

在表格PDF中,这些列存在:

-Dir VARCHAR(1000)NOT NULL

-作者VARCHAR(300)

-标题VARCHAR(300)NOT NULL

日期日期

-图像斑点

-PageNumber INT

这里有一个将从数据库检索标题和图像的函数:

public static void getPdfBoxInfo()
{
    try
    {
        stmt = conn.createStatement();
        ResultSet rs = stmt.executeQuery("SELECT * FROM PDF");
        while(rs.next());
        {
            String Title = rs.getString("Title"); //this is 111 line
            byte[] imageByte = rs.getBytes("Image");
            Image image = new Image(new ByteArrayInputStream(imageByte));
            readingNowController p = new readingNowController();
            HBox hbox = p.creatPdfbox(Title,image);
            p.addBookToMenu(hbox);
            System.out.println("data is get");
        }
        rs.close();
        stmt.close();
    }
    catch (SQLException sqlExcept)
    {
        sqlExcept.printStackTrace();
    }

}

当被调用时,出现此错误:

java.sql.SQLException: Invalid cursor state - no current row.
at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:115)
at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:141)
at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Util.java:225)
at org.apache.derby.impl.jdbc.Util.generateCsSQLException(Util.java:220)
at org.apache.derby.impl.jdbc.EmbedConnection.newSQLException(EmbedConnection.java:3215)
at org.apache.derby.impl.jdbc.ConnectionChild.newSQLException(ConnectionChild.java:155)
at org.apache.derby.impl.jdbc.EmbedResultSet.checkOnRow(EmbedResultSet.java:336)
at org.apache.derby.impl.jdbc.EmbedResultSet.getColumnType(EmbedResultSet.java:354)
at org.apache.derby.impl.jdbc.EmbedResultSet.getString(EmbedResultSet.java:697)
at org.apache.derby.impl.jdbc.EmbedResultSet.getString(EmbedResultSet.java:1342)
at ReadEra.DataBase.databaseMain.getPdfBoxInfo(databaseMain.java:111)
at ReadEra.Main.main(Main.java:28)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplicationWithArgs(Unknown Source)
at javafx.graphics/com.sun.javafx.application.LauncherImpl.launchApplication(Unknown Source)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.base/java.lang.reflect.Method.invoke(Unknown Source)
at java.base/sun.launcher.LauncherHelper$FXHelper.main(Unknown Source)
Caused by: ERROR 24000: Invalid cursor state - no current row.
    at org.apache.derby.shared.common.error.StandardException.newException(StandardException.java:300)
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.wrapArgsForTransportAcrossDRDA(SQLExceptionFactory.java:170)
    at org.apache.derby.impl.jdbc.SQLExceptionFactory.getSQLException(SQLExceptionFactory.java:75)
    ... 22 more

在主方法中,我与数据库建立了连接,并调用了先前的功能:

    public static void main(String[] args) throws SQLException, IOException {
    System.out.println("Start conn");
    createConnection();
    System.out.println("Start get");
    getPdfBoxInfo();
    System.out.println("close");
    shutdown();
    launch(args);
}

我想解决这个问题,请大家谢谢

java sql database jdbc derby
1个回答
0
投票

[C0之后的分号。删除它,它应该可以正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.