Java &引用;“结果集未正确定位”;调用了.next(),但仍然没有';我不工作,请告诉我好吗?

Java &引用;“结果集未正确定位”;调用了.next(),但仍然没有';我不工作,请告诉我好吗?,java,sql,postgresql,Java,Sql,Postgresql,我正试图从我用postgresql创建的数据库中提取歌曲数据。我一直遇到这个错误,我不知道该怎么做,因为我调用了resultSet.next()。 有什么建议吗 String SQL = "SELECT trackName, albumName FROM tracks, artists, albums WHERE 'song' = tracks.trackname AND tracks.mainartist = artists.artistname AND al

我正试图从我用postgresql创建的数据库中提取歌曲数据。我一直遇到这个错误,我不知道该怎么做,因为我调用了resultSet.next()。 有什么建议吗

     String SQL = "SELECT trackName, albumName FROM tracks, artists, 
     albums WHERE 'song' = tracks.trackname AND tracks.mainartist = 
     artists.artistname AND albums.artist = artists.artistname";

    try
    {
        org.postgresql.Driver.isRegistered();
        Class.forName("org.postgresql.Driver");
        Connection connection = DriverManager.getConnection(url,username,password); //creates a new connection

        Statement statement = connection.createStatement();
        ResultSet resultSet = statement.executeQuery(SQL);
        resultSet.next();


        String album = resultSet.getString(3);
        String artist = resultSet.getString(4);
        String trackName = resultSet.getString(2);
        String feat = resultSet.getString(5);
        String date = resultSet.getString(6);

        console.println("");
        console.println("");
        console.println("Track Name: "+trackName);
        console.println("");
        console.println("Track Album: "+album);
        console.println("");
        console.println("Track Artist(s): "+artist);
        console.println("");
        console.println("Featuring: "+feat);
        console.println("");
        console.println("Track Release Date: "+date);
        console.println("");
        console.println("\n");

    }
    catch(Exception e)
    {
        console.println("SORRY, COULD NOT CONNECT YOU TO THE DATABASE.");
        console.println(e);
        console.println("");
        e.printStackTrace();
    }
我要在终端上打印出来:

    SORRY, COULD NOT CONNECT YOU TO THE DATABASE.
    org.postgresql.util.PSQLException: ResultSet not positioned properly, 
    perhaps you need to call next.
这是stackTrace:

    org.postgresql.util.PSQLException: ResultSet not positioned properly, perhaps you need to call next.
at org.postgresql.jdbc.PgResultSet.checkResultSet(PgResultSet.java:2772)
at org.postgresql.jdbc.PgResultSet.getString(PgResultSet.java:1894)
at Info.songInfo(Info.java:49)
at __SHELL14.run(__SHELL14.java:5)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at bluej.runtime.ExecServer$3.run(ExecServer.java:752)

在尝试从行中检索信息之前,应始终检查
next
中的返回值,因为您可能不在行中。发件人:

如果新的当前行有效,则返回:
true
<代码>错误如果没有更多行

我怀疑您的查询与任何行都不匹配,因此
next
返回
false
,但您试图从不存在的行读取

因此,在你的情况下:

if (resultSet.next()) {
    String album = resultSet.getString(3);
    // ...
} else {
    // There were no matching rows
}

谢谢你,我试过了,现在跳转到else语句,你知道为什么吗?你的查询可能没有返回任何信息?通过终端中的psql手动运行它,并确保您确实得到了一些返回的行。@GABEPTICHFORD-因为您的查询没有返回任何内容。查询是否应该不返回trackname和albumname???@GABEPTICHFORD-仅当存在匹配行时才返回。显然没有。我建议遵循上面菲利普的建议。