Sql [resolvido]

Olá pessoal, eu estou usando o postgres
e estou com uma dúvida aqui que não estou conseguindo resolver

Quando eu faço a seguinte consulta

Class.forName("org.postgresql.Driver");
            conn = DriverManager.getConnection("jdbc:postgresql://localhost:5432/omm_tool?user=omm_tool&password=omm_tool");
            ps = conn.prepareStatement("SELECT version, release, language, license, model, revision_number, typerep, pathrep, usernamerep, passwordrep FROM \"omm_assessment_1.1\" WHERE project_name = ? ORDER BY id DESC");
            ps.setString(1, projectName);
            rs = ps.executeQuery();

            if (!rs.next()) {
                 System.out.println("projectName is null!");                 
            }

            System.out.println("rs.getString(2) = " + rs.getString(2));
            System.out.println("rs.getString(3) = " + rs.getString(3));
            System.out.println("rs.getString(4) = " + rs.getString(4));

            list.add(rs.getString(2));
            list.add(rs.getString(3));
            list.add(rs.getString(4));
            list.add(rs.getString(5));
            list.add(rs.getString(6));
            list.add(rs.getString(7));
            list.add(rs.getString(8));
            list.add(rs.getString(9));
            list.add(rs.getString(10));

O que eu devo fazer para conseguir pegar a primeira linha da consulta?

[]'s.

rs.first() vai para o primeiro row

Olá leoviniga
eu coloquei o comando da seguinte forma

System.out.println("rs.getString(2) = " + rs.getString(2));
            System.out.println("rs.getString(3) = " + rs.getString(3));
            System.out.println("rs.getString(4) = " + rs.getString(4));
            rs.first();
            list.add(rs.getString(2));
            list.add(rs.getString(3));
            list.add(rs.getString(4));
            list.add(rs.getString(5));
            list.add(rs.getString(6));
            list.add(rs.getString(7));
            list.add(rs.getString(8));
            list.add(rs.getString(9));
            list.add(rs.getString(10));

porém apareceu a seguinte mensagem

rs.getString(2) = null
rs.getString(3) = null
rs.getString(4) = null
org.postgresql.util.PSQLException: Operação requer um ResultSet rolável, mas este ResultSet é FORWARD_ONLY (somente para frente).
        at org.postgresql.jdbc2.AbstractJdbc2ResultSet.checkScrollable(AbstractJdbc2ResultSet.java:207)
        at org.postgresql.jdbc2.AbstractJdbc2ResultSet.first(AbstractJdbc2ResultSet.java:292)
        at DBConnection.findProject(DBConnection.java:275)
        at TestDBConnection.main(TestDBConnection.java:62)
Exception in thread "main" java.lang.NullPointerException
        at TestDBConnection.main(TestDBConnection.java:63)
Java Result: 1
CONSTRUÍDO COM SUCESSO (tempo total: 1 segundo)

Será que tem como vc ou alguém me dar uma ajuda leoviniga?

[]'s.

while(rs.next){ System.out.println("rs.getString(2) = " + rs.getString(2)); System.out.println("rs.getString(3) = " + rs.getString(3)); System.out.println("rs.getString(4) = " + rs.getString(4)); list.add(rs.getString(2)); list.add(rs.getString(3)); list.add(rs.getString(4)); list.add(rs.getString(5)); list.add(rs.getString(6)); list.add(rs.getString(7)); list.add(rs.getString(8)); list.add(rs.getString(9)); list.add(rs.getString(10)); }
Tenta assim

Falaaa leoviniga,
deu certo aqui eu tinha me esquecido de instânciar a minha lista :smiley:

Obrigado pela sua ajuda leoviniga
Agora deu certo aqui :smiley: .

[]'s.

Métodos como first() e last() só funcionam para ResultSets que não são forward only. Acontece que por padrão eles são forward-only, já que é muito raro você precisar de um resultset navegável. Resultsets assim consomem mais recursos e geralmente são ligeiramente mais lentos.

Todo resultset já é aberto, por padrão, na posição anterior a primeira linha. Então, o correto é só dar o next() uma vez, e ele ficará na primeira linha, como o colega fez.

Outra coisa, nesse if faltou um return:

if (!rs.next()) { System.out.println("projectName is null!"); return; }

Caso contrário seu método irá tentar ler o conteúdo da linha que não existe. Outra opção seria trocar esse System.out por uma exception.