ОШИБКА: org.postgresql.util.PSQLException: Индекс столбца находится вне диапазона: 3, количество столбцов: 2. Совет? - PullRequest
0 голосов
/ 19 апреля 2019

Я пытаюсь извлечь данные из базы данных, которую я создал с помощью pgAdmin.Я использовал запрос в pgAdmin, и он отлично работает, однако, когда я помещаю этот запрос в свой код, я получаю сообщение об ошибке.

Вот SQL для таблицы треков:

 -- Table: public.tracks

 -- DROP TABLE public.tracks;

 CREATE TABLE public.tracks
 (
trackid integer NOT NULL,
trackname text COLLATE pg_catalog."default" NOT NULL,
album text COLLATE pg_catalog."default" NOT NULL,
mainartist text COLLATE pg_catalog."default" NOT NULL,
feat text COLLATE pg_catalog."default",
releasedate text COLLATE pg_catalog."default" NOT NULL,
filelink text COLLATE pg_catalog."default" NOT NULL,
CONSTRAINT tracks_pkey PRIMARY KEY (trackid, trackname),
CONSTRAINT track UNIQUE (trackname)
 ,
CONSTRAINT album FOREIGN KEY (album)
    REFERENCES public.albums (albumname) MATCH SIMPLE
    ON UPDATE NO ACTION
    ON DELETE NO ACTION,
CONSTRAINT artist FOREIGN KEY (mainartist)
    REFERENCES public.artists (stagename) MATCH SIMPLE
    ON UPDATE NO ACTION
    ON DELETE NO ACTION
 )
 WITH (
OIDS = FALSE
 )
 TABLESPACE pg_default;

 ALTER TABLE public.tracks
OWNER to postgres;

Здесьэто код, который я пытаюсь использовать, который включает запрос:

 String SQL = "SELECT trackName, albumName FROM public.tracks, 
 public.albums WHERE tracks.trackname = 'Jungle' AND tracks.mainartist = 
 albums.artist;";
    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);
        if (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");
        }
        else
        {
            console.println("ERROR: There were no matching rows");
        }

Я получаю сообщение об ошибке:

 org.postgresql.util.PSQLException: The column index is out of range: 3, number of columns: 2.

И StackTrace:

 org.postgresql.util.PSQLException: The column index is out of range: 3, number of columns: 2.
at org.postgresql.jdbc.PgResultSet.checkColumnIndex(PgResultSet.java:2755)
at org.postgresql.jdbc.PgResultSet.checkResultSet(PgResultSet.java:2775)
at org.postgresql.jdbc.PgResultSet.getString(PgResultSet.java:1894)
at Info.songInfo(Info.java:48)
at __SHELL10.run(__SHELL10.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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...