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.
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.
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
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
Obrigado então, vou assistir as video-aulas e me aprofundar e ler a apostila da Caelum.
Mais uma vez, obrigado.
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;
}
}
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ê.
vlw pela observação, vou corrigir meus erros
Bah a apostila da Caelum FJ-11 não tem nada de Banco de Dados, alguém poderia me sugerir outra pra ler?
Valeu ai Bruno, vou começar a ler ela.