Iniciando com Banco de Dados

9 respostas
J

Sou iniciante em Java, e gostaria que me indicassem materiais para eu ler, sobre como fazer conexões com o banco de dados e tal, algo básico mesmo que eu vá entender.

Desde já, agradeço a atenção.

Jéferson Santos.

9 Respostas

mausexdd

Antes de pensar em conectar com um db na minha opinião você deve aprender sobre operadores,estruturas de decisão,declarações,collections e ai vai…

E procure as apostilas da caelum

R

Boa noite!

Cara baixa a apostila de orientação a objetos em java da caelum que não tem erro. Logo você vai estar com nisso!

flw

J

Obrigado então, vou assistir as video-aulas e me aprofundar e ler a apostila da Caelum.
Mais uma vez, obrigado.

nicolas_dias

para fazer conexão com o banco de dados crie uma classe de configuracao:

package persistencia;

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

public class BaseDAO {

    protected static Connection conexao = null;
//cria a conexao com o banco de dados
    public BaseDAO() throws IOException {
        if(conexao == null) {
            try {
                Class.forName("org.postgresql.Driver");
                conexao = DriverManager.getConnection("jdbc:DBC(ex:postgres):nomeDoBanco", "usuario", "senha");
            } catch(ClassNotFoundException e) {
                throw new IOException("Driver PostgreSQL nao encontrado!");

            } catch(SQLException e) {
                throw new IOException("Nao foi possivel conectar ao banco: " + e.getMessage());
            }
        }
    }

    public Connection getConexao() {
        return conexao;
    }
//fecha conexão
    @Override
    public void finalize() {
        try {
            conexao.close();
        } catch(Exception e) {}
    }
}

crie tambem uma classe responsavel por receber os comandos SQL e metodos que serão usados;
faça esta classe herdar da classe de configuracao do banco:

public class SQLScoreDAO extends BaseDAO  {
  
      
    public PgSQLScoreDAO() throws IOException, SQLException {
    
     
    }
    //adiciona um registro ao bd
    public void add(Score p) throws Exception {
   //atribuindo um insert a variavel
          private PreparedStatement stIncluir = conexao.prepareStatement(
                "INSERT INTO SCORE (nome,pontos) VALUES (?, ?)"); // ? é onde será substituida por valores
        stIncluir.setString(1, p.getNome());//substitui o primeiro ? do insert pelo valorl especificado
        stIncluir.setString(2, p.getPontos());//substitui o segundo ? do insert pelo valorl especificado
       stIncluir.execute();//executa a query
    }
    //coloca todos os registros em um array, usando uma select
    public ArrayList<Score> pegaTodos() {
  //atribuindo uma select  a variavel
           private PreparedStatement stListar = conexao.prepareStatement(
                 "SELECT * FROM SCORE ORDER BY PONTOS DESC"); 
        ArrayList<Score> resultados = new ArrayList<Score>();//cria um array
        try {
            ResultSet r = stListar.executeQuery();//executa a query

            while(r.next()){//enquanto houver registros faça
                // adiciona o registro ao array (nome, e pontos é o nome dos campos que estão no bd, esta pegando o valor destes campos)
                resultados.add(new Score(r.getString("nome"), r.getString("pontos")));
            }
        } catch (SQLException ex) {
            
        }
        
        return resultados;
        
    }

    
}
B

Nicolas, só uma observação sobre um problema que pode acontecer com o teu código:

Instanciar PreparedStatements no construtor do tua classe pode levar a um gasto desnecessário casos todos eles não forem usados. Fora que ao fechar a conexão, esses statements abertos serão invalidados, e podem haver problemas ao tentar executar deles nesse estado.

Deixe os statements como variáveis locais dos métodos onde eles são executados.

Edit: Mesma coisa com a conexão, deixe o getConnection criar a conexão, ou melhor, defira para uma biblioteca de pool de conexões para fazer isto por você.

nicolas_dias

vlw pela observação, vou corrigir meus erros

J

Bah a apostila da Caelum FJ-11 não tem nada de Banco de Dados, alguém poderia me sugerir outra pra ler?

B

Vê a FJ-21.

J

Valeu ai Bruno, vou começar a ler ela.

Criado 23 de fevereiro de 2013
Ultima resposta 25 de fev. de 2013
Respostas 9
Participantes 5