Olá a todos ...
Estou aprendendo JAVA, porem eu tenho muita dificuldade em entender alguns conceitos ...
Já estou a algum tempo tentando entender o funcionamento dos pacotes DAO ... para isso eu fiz um como exemplo.
1º Criei o banco estoque, com algumas tabelas ... duas delas estão abaixo:
[img]http://img402.imageshack.us/img402/2125/43448119.jpg[/img]
package DAO;
import bean.Cliente;
import conexao.Banco;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;
/**
*
* @author Eduardo
*/
public class ClienteDao {
//Inserir
public boolean inserir(Cliente cliente) throws SQLException {
Banco banco = new Banco();
Connection con = null;
String sql = "insert into usuario " + "( Id, Nome, Cpf, Id_contato, Id_endereco, Id_categoria, Id_pedido) "
+ " VALUES(?,?,?,?,?,?,?)";
try {
con = banco.conectar();
PreparedStatement ps = (PreparedStatement) con.prepareStatement(sql);
ps.setInt(1, cliente.getId());
ps.setString(2, cliente.getNome());
ps.setInt(3, cliente.getCpf());
ps.setInt(4, cliente.getId_contato());
ps.setInt(5, cliente.getId_endereco());
ps.setInt(6, cliente.getId_categoria());
ps.setInt(7, cliente.getId_pedido());
ps.execute();
ps.close();
return true;
} catch (SQLException e) {
System.err.println("Erro ao inserir na tabela cliente");
e.printStackTrace();
return false;
} finally {
banco.fechaConexao(con);
}
}
// Consulta (Lista)
public List<Cliente> getLista() throws SQLException {
Connection con = null;
Banco banco = new Banco();
String sql = "select * from cliente";
List<Cliente> listaresultado = new ArrayList<Cliente>();
try {
con = banco.conectar();
PreparedStatement stmt = con.prepareStatement(sql);
ResultSet rs = stmt.executeQuery();
while (rs.next()) {
Cliente c1 = new Cliente();
c1.setId_contato(rs.getInt("id_contato"));
c1.setCpf(rs.getInt("Cpf"));
c1.setNome(rs.getString("nome"));
c1.setId_endereco(rs.getInt("id_endereco"));
c1.setId_categoria(rs.getInt("id_categoria"));
c1.setId_pedido(rs.getInt("id_pedido"));
c1.setId(rs.getInt("id"));
listaresultado.add(c1);
}
rs.close();
stmt.close();
}catch (SQLException e) {
System.err.println("Erro na Querry");
e.printStackTrace();
}
finally {
con.close();
}
return listaresultado;
}
//Remove
public void exclui(Integer Id) throws ClienteException {
Connection conn = null;
Banco banco = new Banco();
try {
conn = banco.conectar();
String SQL = "DELETE FROM Usuario WHERE Id = ?";
PreparedStatement comando = conn.prepareStatement(SQL);
comando.setInt(1, Id);
comando.execute();
comando.close();
} catch (Exception e) {
System.out.println("Erro ao tentar deletar usuario: " + e);
throw new ClienteException(
"Erro ao tentar alterar informações de um usuario: "
+ e.getMessage());
} finally {
banco.fechaConexao(conn);
}
}
//Atualizar (Update)
public void update(Cliente cliente) throws ClienteException {
Connection conn = null;
Banco banco = new Banco();
try {
conn = banco.conectar();
String SQL = "UPDATE Cliente SET id = ?, nome = ?, cpf = ?, id_contato = ?, id_endereco = ?, id_categoria = ?, id_pedido = ?, WHERE id = ?";
PreparedStatement comando1 = conn.prepareStatement(SQL);
comando1.setInt(1, cliente.getId());
comando1.setString(2, cliente.getNome());
comando1.setInt(3, cliente.getCpf());
comando1.setInt(4, cliente.getId_contato());
comando1.setInt(5, cliente.getId_endereco());
comando1.setInt(6, cliente.getId_categoria());
comando1.setInt(7, cliente.getId_pedido());
// Executa o comando acima
comando1.execute();
// Fecha o comando executado.
comando1.close();
} catch (Exception e) {
System.out.println("Erro ao tentar alterar usuario: " + e);
throw new ClienteException(
"Erro ao tentar alterar informações de um usuario: "
+ e.getMessage());
} finally {
banco.fechaConexao(conn);
}
}
}
Agora vem as duvidas ...
No 1º metodo da classe, onde é inserido os clientes. É necessario descrever no codigo o item ID (Que se refere ao id do cliente)? Pois no banco este campo da tabela cliente esta como auto_incremento. Ou a maneira que eu fiz esta correta?String sql = "insert into usuario " + "( Id, Nome, Cpf, Id_contato, Id_endereco, Id_categoria, Id_pedido) "
+ " VALUES(?,?,?,?,?,?,?)";
Caso não entendam minhas duvidas, me digam que eu tento explicar de outra forma.
Se alguem puder me ajudar ... qualquer correção, explicação ou dica sera muito bem vinda.
Vlw.