Você está na página 1de 6

Java - Conexão ao Banco de Dados usando JDBC

1. Criar o modelo no DBDesigner, como mostrado a seguir. Salvar o script de criação da tabela.

2. Criar o esquema e as tabelas no MySQL (Pode usar o MySQL Query Browser)


3. Criar um projeto Java simples, com o nome Empresa, no NetBeans
4. Adicionar o driver de conexão MySQL:
a. Descompactar o arquivo com o driver em algum diretório (Caso ainda não o tenha feito)
b. Clicar com o botão direito sobre o diretório biblioteca e adicionar jar
c. Localizar o arquivo contendo o driver e adicioná-lo
5. Criar três pacotes para o Projeto Empresa: modelo, persistencia e teste
6. No pacote teste, criar a classe TestaConexao:

package teste;

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

public class TestaConexao {

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


Connection conexao = null;
String url = "jdbc:mysql://”servidor”:3306/empresa";
String usuario = "root";
String senha = "";
try{
Class.forName("org.gjt.mm.mysql.Driver");
conexao = DriverManager.getConnection(url, usuario, senha);
System.out.println("Conexão efetuada com sucesso!!!");
}catch(ClassNotFoundException cnfe){
System.out.println("Erro ao carregar o driver");
cnfe.printStackTrace();
}
}

7. Simular e testar erros na classe anterior


8. Criar uma classe no pacote persistência que contenha o método estático: getConexao():
package persistencia;

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

public class GerenteConexao {

//metodo estático gerador de conexões


public static Connection getConexao(){
Connection conexao = null;
String url = "jdbc:mysql://localhost:3306/empresa";
String usuario = "root";
String senha = "root";

try{
Class.forName("org.gjt.mm.mysql.Driver");
conexao = DriverManager.getConnection(url, usuario, senha);
System.out.println("Conexão efetuada com sucesso!!!");
}catch(ClassNotFoundException cnfe){
System.out.println("Erro ao carregar o driver");
cnfe.printStackTrace();
}

catch(SQLException sqle){
System.out.println("Não foi possível conectar com o BD");
sqle.printStackTrace();
}
return conexao;
}
}
9. Testar a classe
10. Criar uma classe TestaEmpregado contendo o método main() para testar a conexão com o banco de
dados:

package teste;

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import persistencia.GerenteConexao;

public class TestaEmpregado {


public static void main(String a[]){

Connection con = GerenteConexao.getConexao();

PreparedStatement pst = null;


try{
String sql = "INSERT INTO EMPREGADO(CODIGO, NOME, IDADE) VALUES(1,'Maria',25)";
pst = con.prepareStatement(sql);
pst.executeUpdate();
System.out.println("Dados inseridos com sucesso!!!");
}catch(SQLException sqle){
System.out.println("Não foi possível inserir os dados!!");

}
}

11. Alterar a classe:

String sql = "INSERT INTO EMPREGADO(CODIGO, NOME, IDADE) VALUES(?,?,?)";


pst = con.prepareStatement(sql);

pst.setInt(1,2);
pst.setString(2,"José");
pst.setInt(3,28);
pst.executeUpdate();

12. Criar o classe EmpregadoDAO e o método grava:

import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;

public class EmpregadoDAO {

public static int grava(int codigo, String nome, int idade) {


Connection con = GerenteConexao.getConexao();

PreparedStatement pst = null;


int ret = 0;
try {
String sql = "INSERT INTO EMPREGADO(CODIGO, NOME, IDADE) VALUES(?,?,?)";
pst = con.prepareStatement(sql);

pst.setInt(1, codigo);
pst.setString(2, nome);
pst.setInt(3, idade);
ret = pst.executeUpdate();
System.out.println("Dados inseridos com sucesso!!!");
} catch (SQLException sqle) {
System.out.println("Não foi possível inserir os dados!!");

}
return ret;

}
}

13. Imagine criar um método grava para uma tabela com 100 campos! Então chegou a hora de criarmos uma
classe Java bean no pacote modelo, para que possamos instanciar objetos dessa classe.

package modelo;
public class Empregado {
private int codigo;
private String nome;
private int idade;

public int getCodigo() {


return codigo;
}

public void setCodigo(int codigo) {


this.codigo = codigo;
}

public String getNome() {


return nome;
}

public void setNome(String nome) {


this.nome = nome;
}

public int getIdade() {


return idade;
}

public void setIdade(int idade) {


this.idade = idade;
}

}
14. Agora vamos atualizar o nosso método grava, passando como parâmetro um objeto e não mais cada um
dos campos:

public static int grava(Empregado empregado) {


Connection con = GerenteConexao.getConexao();

PreparedStatement pst = null;


int ret = 0;
try {
String sql = "INSERT INTO EMPREGADO(CODIGO, NOME, IDADE) VALUES(?,?,?)";
pst = con.prepareStatement(sql);

pst.setInt(1, empregado.getCodigo());
pst.setString(2, empregado.getNome());
pst.setInt(3, empregado.getIdade());
ret = pst.executeUpdate();
System.out.println("Dados inseridos com sucesso!!!");
} catch (SQLException sqle) {
System.out.println("Não foi possível inserir os dados!!");

}
return ret;
}
15. Vamos testar o nosso método grava, para isso vamos criar uma classe de teste, chamada
TestaEmpregadoDAO:

TestaEmpregadoDAO:
public class TestaEmpregadoDAO {
public static void main(String args[]){
Empregado empregado = new Empregado();

empregado.setCodigo(3);
empregado.setNome("Luiz");
empregado.setIdade(45);
EmpregadoDAO.grava(empregado);

}
}

16. Agora vamos criar o método altera:


public static int altera(Empregado empregado) {
Connection con = GerenteConexao.getConexao();

PreparedStatement pst = null;


int ret = 0;
try {
String sql = "UPDATE EMPREGADO SET NOME = ?, IDADE = ? WHERE CODIGO = ?";
pst = con.prepareStatement(sql);
pst.setString(1, empregado.getNome());
pst.setInt(2, empregado.getIdade());
pst.setInt(3, empregado.getCodigo());
ret = pst.executeUpdate();
System.out.println("Dados atualizados com sucesso!!!");
} catch (SQLException sqle) {
System.out.println("Não foi possível atualizar os dados!!");
sqle.printStackTrace();

}
return ret;
}
17. Vamos criar o método exclui:
public static int exclui(int codigo) {
Connection con = GerenteConexao.getConexao();

PreparedStatement pst = null;


int ret = 0;
try {
String sql = "DELETE FROM EMPREGADO WHERE CODIGO = ?";
pst = con.prepareStatement(sql);

pst.setInt(1, codigo);
ret = pst.executeUpdate();
System.out.println("Dados excluído com sucesso!!!");
} catch (SQLException sqle) {
System.out.println("Não foi possível excluir os dados!!");
sqle.printStackTrace();

}
return ret;
}
18. Criar um método para montar o objeto:
public static Empregado le(int codigo) {
Connection con = GerenteConexao.getConexao();

PreparedStatement pst = null;


ResultSet rs = null;
Empregado empregado = null;
try {
String sql = "SELECT * FROM EMPREGADO WHERE CODIGO = ?";
pst = con.prepareStatement(sql);

pst.setInt(1, codigo);
rs = pst.executeQuery();

if (rs.next()){
empregado = new Empregado();
empregado.setCodigo(rs.getInt("codigo"));
empregado.setNome(rs.getString("nome"));
empregado.setIdade(rs.getInt("idade"));
}

System.out.println("Dados excluído com sucesso!!!");


} catch (SQLException sqle) {
System.out.println("Não foi possível excluir os dados!!");
sqle.printStackTrace();

}
return empregado;
}
19. Para testar o método le(), vamos criar o método toString na classe Empregado, após o método setIdade();
public String toString(){
return "código = "+getCodigo()+
"\nNome = "+getNome()+
"\nIdade = "+getIdade();
}
20. Vamos criar outro método para ler todos os empregados do banco de dados:
public static List<Empregado> leTodos() {
List <Empregado> empregados = new ArrayList();
Connection con = GerenteConexao.getConexao();

Statement st = null;
ResultSet rs = null;
Empregado empregado = null;
try {

st = con.createStatement();
rs = st.executeQuery("SELECT * FROM EMPREGADO;");

while (rs.next()){
empregado = new Empregado();
empregado.setCodigo(rs.getInt("codigo"));
empregado.setNome(rs.getString("nome"));
empregado.setIdade(rs.getInt("idade"));

empregados.add(empregado);
}

System.out.println("Dados lidos com sucesso!!!");


} catch (SQLException sqle) {
System.out.println("Não foi possível ler os dados!!");
sqle.printStackTrace();

}
return empregados;

Você também pode gostar