Conexão JDBC e Oracle Express Edition

Não estou conseguindo retornar os dados do banco no java. Quando realizo testes no banco via linha de comando consigo consultar a tabela Pessoa tranquilamente, e usuário/senha também estão corretos, mas pelo java não estou recebendo os dados. Alguém sabe o que pode ser?

“Exception in thread “main” java.sql.SQLException: Erro de ES: Got minus one from a read call”

   package JDBC;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

/**
 *
 * @author User
 */
public class AcessoBanco {


    public static void main(String[] args) throws Exception {

        // comando a ser executado
        String sql = "SELECT CODIGO, NOME, SEXO, EMAIL from PESSOA";
        String url = "jdbc:oracle:thin:@localhost:1521:xe";


        try(// criando conexao passando a url, usuario e senha do banco
                Connection conexao = DriverManager.getConnection(url,"hira", "123");

                PreparedStatement stm = conexao.prepareStatement(sql);
                ResultSet resultado = stm.executeQuery()
                ){

                while(resultado.next()){
                    System.out.println(resultado.getString("nome"));
                }

        } // end try



    }

}

Esse erro acontece quando se estoura o pool de conexões do Oracle. Tente a solução apresentada neste link.

mas em relação ao código está tudo ok?

Sim, pelo que eu vejo, é um código de testes, vai funcionar. Só faltou adicionar um finally após o try para fechar as conexões abertas:

package JDBC;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

/**
 *
 * @author User
 */
public class AcessoBanco {


    public static void main(String[] args) throws Exception {

        // comando a ser executado
        String sql = "SELECT CODIGO, NOME, SEXO, EMAIL from PESSOA";
        String url = "jdbc:oracle:thin:@localhost:1521:xe";


        try{ // criando conexao passando a url, usuario e senha do banco
            Connection conexao = DriverManager.getConnection(url, "hira", "123");

            PreparedStatement stm = conexao.prepareStatement(sql); ResultSet resultado = stm.executeQuery()

            while (resultado.next()) {
                System.out.println(resultado.getString("nome"));
            }

        } finally {
            conexao.close();
            stm.close();
            resultado.close();
        }

    }

}
1 curtida

VALEU, aquele link realmente resolveu o problema de estouro da pool no banco!!