Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro de java.lang.StackOverflowError

Estou tentando fazer o Exrecício, mas ao executar o programa me returna o erro

Exception in thread "main" java.lang.StackOverflowError
    at br.com.caelum.jdbc.DataBase.getConnection(DataBase.java:10)

Segue meu código da classe DataBase:

package br.com.caelum.jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;

public class DataBase {

    static Connection getConnection() throws SQLException {
        Connection connection = DataBase.getConnection();
        return connection;
    }
}

Código da classe com o main:

package br.com.caelum.jdbc;

import java.sql.Connection;
import java.sql.SQLException;
import java.sql.Statement;

public class TestaInsercao {

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

        Connection connection = DataBase.getConnection();
        Statement statement = connection.createStatement();

        boolean resultado = statement.execute("insert into Produto (nome, descricao) values('Notebook', 'i5')");

        System.out.println(resultado);

        connection.close();
        statement.close();
    }

}
2 respostas
solução!

E aí, Diego! Tudo certo, cara? =)

Acredito que o erro esteja na sua classe Database...

Repare que no método getConnection(), você está chamando Database.getConnection()... Ou seja, você criou um método que está chamando a ele mesmo e criando infinitas conexões! Rs...

Se não me engano, você deveria fazer algo parecido com o que se segue no seu getConnection():

public class Database {
    static Connection getConnection() {
        Connection connection = DriverManager.getConnection(...);
        return connection;
   }
}

Sacou a diferença? =)

Espero ter ajudado,

Fábio

hahahaha...era isso mesmo Fabio. Eu estava fazendo o exercício acompanhando os vídeos, e acabei copiando o método da classe TestaInsercao para dentro da DataBase.

Valeu!