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 
Obrigado pela sua ajuda leoviniga
Agora deu certo aqui
.
[]'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.