Atribuir resultado de uma consulta SQL numa variável

Boa noite,

Como faço para atribuir o valor de uma consulta sql a uma variável?

Estou usando netbeans e postgre e numa consulta normal posso recuperar qualquer dado que queira, mas num comando insert faço uma consulta para pegar a sequence do banco para
gerar o código da chave primária mas não consigo atribuir o valor do resultado que é um inteiro numa variável. Acredito que o erro esteja no seguinte código:

[code] int sequence = 0;

    try {
        String nextValue = "select nextval( 

Quem puder me ajudar agradeço.faturamento.tbandeira_cartoes_tcodigo_pk_seq

Quem puder me ajudar agradeço.)";
conexao.executeSQL(nextValue);

        if (conexao.rs.next()){
            conexao.rs.first();
            sequence = conexao.rs.getInt(nextValue);
            
        }

        conexao.Conexao();
        String qryInsere =  " INSERT INTO "                         +
                            " faturamento.tbandeira_cartoes ( "     +
                            " tcodigo_pk, "                         +
                            " tdescricao, "                         +
                            " tdata "                               +
                            " )  "                                  +
                            " VALUES ( "                            +
                            sequence +","                           +
                            " 

Quem puder me ajudar agradeço."+jTextField3.getText()+"

Quem puder me ajudar agradeço.," +
"

Quem puder me ajudar agradeço."+jTextField4.getText()+"

Quem puder me ajudar agradeço.)";

        conexao.executeSQL(qryInsere);
        conexao.rs.close();

    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, "Falha na inclusão do registro.");
    }[/code] 

Quem puder me ajudar agradeço.

... = conexao.rs.getInt(nextValue);  

O parâmetro para getInt é um inteiro, que é o número da coluna que você quer pegar no registro (começando por 1), ou então o nome da coluna que você quer pegar no registro. No seu caso, nextVal não é um nome de coluna (é um nome da função), mas você sabe que o resultado tem apenas uma coluna. Então passe o inteiro 1, simplesmente:

... = conexao.rs.getInt (1);

O problema está resolvido, só faço um adendo é que quando corrigido o código como fui instruído, estava gerando uma exceção. Debugando o código pude verificar que quando era executada a linha … = conexao.rs.getInt (1); caia na exceção. Fiz alguns testes e foi resolvido inserido a seguinte linha antes da mencionada …conexao.rs.first(); posicionando o registro na primeira linha mesmo sabendo que o resultado é somente de uma linha.
Portanto o código ficou assim:

[code]try {

        conexao.Conexao();

        StringBuilder nextValue = new StringBuilder();
        nextValue.append("select nextval(

Mas resolvido essa questão, me deparei com outra logo em seguida.

No término da execução é exibida a seguinte mensagem de erro.

18/03/2010 11:19:06 menu.ConnectionDB executeSQL
SEVERE: null
org.postgresql.util.PSQLException: Nenhum resultado foi retornado pela consulta.
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:236)
at menu.ConnectionDB.executeSQL(ConnectionDB.java:53)

Este erro é gerado mais o registro é inserido com sucesso. Debugando novamente meu código encontrei a falha numa classe chamada ConnectionDB, classe que executa o que preciso no banco. Como ela é pequena vou postar ela completa e sinalizar onde o erro acontece.

[code]package menu;

/**Classe para realizar conexões de banco de dados usando JDBC.

  • @author Aecio e Franklin
  • @version 1.0
  • @since Release 01 da aplicação
    */

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.DriverManager;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ConnectionDB {

private static Connection CONNECTION;
private Statement stmt;
public static ResultSet rs;

/** Método construtor.
 */
public void Conexao() {

    try {

        Class.forName(org.postgresql.Driver.class.getName());
        CONNECTION = DriverManager.getConnection("jdbc:postgresql://localhost/sirius_erp","adm","036403");

    } catch (Exception e) {

        e.printStackTrace();

    }
}//end init block

/** Método para retorno do objeto de conexão.
 *  */
public static Connection getConnection(){
    return CONNECTION;
}

/**Método para executar comandos SQL.
 * @param sql Parâmetro contendo o comando sql para consultas.
 */
public ResultSet executeSQL(StringBuilder sql){

    try {
        stmt = getConnection().createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
        rs = stmt.executeQuery(sql.toString());
        return rs;

    } catch (SQLException ex) {
        Logger.getLogger(ConnectionDB.class.getName()).log(Level.SEVERE, null, ex);
        
    }

    return null;
}

}//end class
[/code]

o erro acontece justamente na linha 53 que é onde passo meu SQL. Mas desde já agradeço a solução para o primeiro problema.

faturamento.tbandeira_cartoes_tcodigo_pk_seq

Mas resolvido essa questão, me deparei com outra logo em seguida.

No término da execução é exibida a seguinte mensagem de erro.

18/03/2010 11:19:06 menu.ConnectionDB executeSQL
SEVERE: null
org.postgresql.util.PSQLException: Nenhum resultado foi retornado pela consulta.
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:236)
at menu.ConnectionDB.executeSQL(ConnectionDB.java:53)

Este erro é gerado mais o registro é inserido com sucesso. Debugando novamente meu código encontrei a falha numa classe chamada ConnectionDB, classe que executa o que preciso no banco. Como ela é pequena vou postar ela completa e sinalizar onde o erro acontece.

[code]package menu;

/**Classe para realizar conexões de banco de dados usando JDBC.

  • @author Aecio e Franklin
  • @version 1.0
  • @since Release 01 da aplicação
    */

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.DriverManager;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ConnectionDB {

private static Connection CONNECTION;
private Statement stmt;
public static ResultSet rs;

/** Método construtor.
 */
public void Conexao() {

    try {

        Class.forName(org.postgresql.Driver.class.getName());
        CONNECTION = DriverManager.getConnection("jdbc:postgresql://localhost/sirius_erp","adm","036403");

    } catch (Exception e) {

        e.printStackTrace();

    }
}//end init block

/** Método para retorno do objeto de conexão.
 *  */
public static Connection getConnection(){
    return CONNECTION;
}

/**Método para executar comandos SQL.
 * @param sql Parâmetro contendo o comando sql para consultas.
 */
public ResultSet executeSQL(StringBuilder sql){

    try {
        stmt = getConnection().createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
        rs = stmt.executeQuery(sql.toString());
        return rs;

    } catch (SQLException ex) {
        Logger.getLogger(ConnectionDB.class.getName()).log(Level.SEVERE, null, ex);
        
    }

    return null;
}

}//end class
[/code]

o erro acontece justamente na linha 53 que é onde passo meu SQL. Mas desde já agradeço a solução para o primeiro problema.

)as sequencia");

        conexao.executeSQL(nextValue);
        conexao.rs.first();
        sequence = (conexao.rs.getInt(1));

        StringBuilder qryInsere = new StringBuilder();

        qryInsere.append(" INSERT INTO ");
        qryInsere.append(" faturamento.tbandeira_cartoes ( " );
        qryInsere.append(" tcodigo_pk, "   );
        qryInsere.append(" tdescricao, "   );
        qryInsere.append(" tdata "   );
        qryInsere.append(" )  "    );
        qryInsere.append(" VALUES ( "   );
        qryInsere.append(sequence +","   );
        qryInsere.append("

Mas resolvido essa questão, me deparei com outra logo em seguida.

No término da execução é exibida a seguinte mensagem de erro.

18/03/2010 11:19:06 menu.ConnectionDB executeSQL
SEVERE: null
org.postgresql.util.PSQLException: Nenhum resultado foi retornado pela consulta.
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:236)
at menu.ConnectionDB.executeSQL(ConnectionDB.java:53)

Este erro é gerado mais o registro é inserido com sucesso. Debugando novamente meu código encontrei a falha numa classe chamada ConnectionDB, classe que executa o que preciso no banco. Como ela é pequena vou postar ela completa e sinalizar onde o erro acontece.

[code]package menu;

/**Classe para realizar conexões de banco de dados usando JDBC.

  • @author Aecio e Franklin
  • @version 1.0
  • @since Release 01 da aplicação
    */

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.DriverManager;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ConnectionDB {

private static Connection CONNECTION;
private Statement stmt;
public static ResultSet rs;

/** Método construtor.
 */
public void Conexao() {

    try {

        Class.forName(org.postgresql.Driver.class.getName());
        CONNECTION = DriverManager.getConnection("jdbc:postgresql://localhost/sirius_erp","adm","036403");

    } catch (Exception e) {

        e.printStackTrace();

    }
}//end init block

/** Método para retorno do objeto de conexão.
 *  */
public static Connection getConnection(){
    return CONNECTION;
}

/**Método para executar comandos SQL.
 * @param sql Parâmetro contendo o comando sql para consultas.
 */
public ResultSet executeSQL(StringBuilder sql){

    try {
        stmt = getConnection().createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
        rs = stmt.executeQuery(sql.toString());
        return rs;

    } catch (SQLException ex) {
        Logger.getLogger(ConnectionDB.class.getName()).log(Level.SEVERE, null, ex);
        
    }

    return null;
}

}//end class
[/code]

o erro acontece justamente na linha 53 que é onde passo meu SQL. Mas desde já agradeço a solução para o primeiro problema.

“+jTextField3.getText()+”

Mas resolvido essa questão, me deparei com outra logo em seguida.

No término da execução é exibida a seguinte mensagem de erro.

18/03/2010 11:19:06 menu.ConnectionDB executeSQL
SEVERE: null
org.postgresql.util.PSQLException: Nenhum resultado foi retornado pela consulta.
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:236)
at menu.ConnectionDB.executeSQL(ConnectionDB.java:53)

Este erro é gerado mais o registro é inserido com sucesso. Debugando novamente meu código encontrei a falha numa classe chamada ConnectionDB, classe que executa o que preciso no banco. Como ela é pequena vou postar ela completa e sinalizar onde o erro acontece.

[code]package menu;

/**Classe para realizar conexões de banco de dados usando JDBC.

  • @author Aecio e Franklin
  • @version 1.0
  • @since Release 01 da aplicação
    */

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.DriverManager;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ConnectionDB {

private static Connection CONNECTION;
private Statement stmt;
public static ResultSet rs;

/** Método construtor.
 */
public void Conexao() {

    try {

        Class.forName(org.postgresql.Driver.class.getName());
        CONNECTION = DriverManager.getConnection("jdbc:postgresql://localhost/sirius_erp","adm","036403");

    } catch (Exception e) {

        e.printStackTrace();

    }
}//end init block

/** Método para retorno do objeto de conexão.
 *  */
public static Connection getConnection(){
    return CONNECTION;
}

/**Método para executar comandos SQL.
 * @param sql Parâmetro contendo o comando sql para consultas.
 */
public ResultSet executeSQL(StringBuilder sql){

    try {
        stmt = getConnection().createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
        rs = stmt.executeQuery(sql.toString());
        return rs;

    } catch (SQLException ex) {
        Logger.getLogger(ConnectionDB.class.getName()).log(Level.SEVERE, null, ex);
        
    }

    return null;
}

}//end class
[/code]

o erro acontece justamente na linha 53 que é onde passo meu SQL. Mas desde já agradeço a solução para o primeiro problema.

," );
qryInsere.append("

Mas resolvido essa questão, me deparei com outra logo em seguida.

No término da execução é exibida a seguinte mensagem de erro.

18/03/2010 11:19:06 menu.ConnectionDB executeSQL
SEVERE: null
org.postgresql.util.PSQLException: Nenhum resultado foi retornado pela consulta.
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:236)
at menu.ConnectionDB.executeSQL(ConnectionDB.java:53)

Este erro é gerado mais o registro é inserido com sucesso. Debugando novamente meu código encontrei a falha numa classe chamada ConnectionDB, classe que executa o que preciso no banco. Como ela é pequena vou postar ela completa e sinalizar onde o erro acontece.

[code]package menu;

/**Classe para realizar conexões de banco de dados usando JDBC.

  • @author Aecio e Franklin
  • @version 1.0
  • @since Release 01 da aplicação
    */

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.DriverManager;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ConnectionDB {

private static Connection CONNECTION;
private Statement stmt;
public static ResultSet rs;

/** Método construtor.
 */
public void Conexao() {

    try {

        Class.forName(org.postgresql.Driver.class.getName());
        CONNECTION = DriverManager.getConnection("jdbc:postgresql://localhost/sirius_erp","adm","036403");

    } catch (Exception e) {

        e.printStackTrace();

    }
}//end init block

/** Método para retorno do objeto de conexão.
 *  */
public static Connection getConnection(){
    return CONNECTION;
}

/**Método para executar comandos SQL.
 * @param sql Parâmetro contendo o comando sql para consultas.
 */
public ResultSet executeSQL(StringBuilder sql){

    try {
        stmt = getConnection().createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
        rs = stmt.executeQuery(sql.toString());
        return rs;

    } catch (SQLException ex) {
        Logger.getLogger(ConnectionDB.class.getName()).log(Level.SEVERE, null, ex);
        
    }

    return null;
}

}//end class
[/code]

o erro acontece justamente na linha 53 que é onde passo meu SQL. Mas desde já agradeço a solução para o primeiro problema.

“+jTextField4.getText()+”

Mas resolvido essa questão, me deparei com outra logo em seguida.

No término da execução é exibida a seguinte mensagem de erro.

18/03/2010 11:19:06 menu.ConnectionDB executeSQL
SEVERE: null
org.postgresql.util.PSQLException: Nenhum resultado foi retornado pela consulta.
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:236)
at menu.ConnectionDB.executeSQL(ConnectionDB.java:53)

Este erro é gerado mais o registro é inserido com sucesso. Debugando novamente meu código encontrei a falha numa classe chamada ConnectionDB, classe que executa o que preciso no banco. Como ela é pequena vou postar ela completa e sinalizar onde o erro acontece.

[code]package menu;

/**Classe para realizar conexões de banco de dados usando JDBC.

  • @author Aecio e Franklin
  • @version 1.0
  • @since Release 01 da aplicação
    */

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.DriverManager;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ConnectionDB {

private static Connection CONNECTION;
private Statement stmt;
public static ResultSet rs;

/** Método construtor.
 */
public void Conexao() {

    try {

        Class.forName(org.postgresql.Driver.class.getName());
        CONNECTION = DriverManager.getConnection("jdbc:postgresql://localhost/sirius_erp","adm","036403");

    } catch (Exception e) {

        e.printStackTrace();

    }
}//end init block

/** Método para retorno do objeto de conexão.
 *  */
public static Connection getConnection(){
    return CONNECTION;
}

/**Método para executar comandos SQL.
 * @param sql Parâmetro contendo o comando sql para consultas.
 */
public ResultSet executeSQL(StringBuilder sql){

    try {
        stmt = getConnection().createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
        rs = stmt.executeQuery(sql.toString());
        return rs;

    } catch (SQLException ex) {
        Logger.getLogger(ConnectionDB.class.getName()).log(Level.SEVERE, null, ex);
        
    }

    return null;
}

}//end class
[/code]

o erro acontece justamente na linha 53 que é onde passo meu SQL. Mas desde já agradeço a solução para o primeiro problema.

" );
qryInsere.append(" ) " );

        conexao.executeSQL(qryInsere);

    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, "Falha na inclusão do registro.");
    }[/code]

Mas resolvido essa questão, me deparei com outra logo em seguida.

No término da execução é exibida a seguinte mensagem de erro.

18/03/2010 11:19:06 menu.ConnectionDB executeSQL
SEVERE: null
org.postgresql.util.PSQLException: Nenhum resultado foi retornado pela consulta.
at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:236)
at menu.ConnectionDB.executeSQL(ConnectionDB.java:53)

Este erro é gerado mais o registro é inserido com sucesso. Debugando novamente meu código encontrei a falha numa classe chamada ConnectionDB, classe que executa o que preciso no banco. Como ela é pequena vou postar ela completa e sinalizar onde o erro acontece.

[code]package menu;

/**Classe para realizar conexões de banco de dados usando JDBC.

  • @author Aecio e Franklin
  • @version 1.0
  • @since Release 01 da aplicação
    */

import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.sql.DriverManager;
import java.util.logging.Level;
import java.util.logging.Logger;

public class ConnectionDB {

private static Connection CONNECTION;
private Statement stmt;
public static ResultSet rs;

/** Método construtor.
 */
public void Conexao() {

    try {

        Class.forName(org.postgresql.Driver.class.getName());
        CONNECTION = DriverManager.getConnection("jdbc:postgresql://localhost/sirius_erp","adm","036403");

    } catch (Exception e) {

        e.printStackTrace();

    }
}//end init block

/** Método para retorno do objeto de conexão.
 *  */
public static Connection getConnection(){
    return CONNECTION;
}

/**Método para executar comandos SQL.
 * @param sql Parâmetro contendo o comando sql para consultas.
 */
public ResultSet executeSQL(StringBuilder sql){

    try {
        stmt = getConnection().createStatement(ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY);
        rs = stmt.executeQuery(sql.toString());
        return rs;

    } catch (SQLException ex) {
        Logger.getLogger(ConnectionDB.class.getName()).log(Level.SEVERE, null, ex);
        
    }

    return null;
}

}//end class
[/code]

o erro acontece justamente na linha 53 que é onde passo meu SQL. Mas desde já agradeço a solução para o primeiro problema.