Utilizando Swing com Banco de Dados

Este post foi removido e transferido para a seguinte url:

http://www.mballem.com/post/utilizando-swing-com-banco-de-dados

Anúncios

, , , , , ,

  1. #1 por Victor em 22/02/2011 - 12:15

    Não sabe a quanto tempo estou atrás de algo assim. Tinha um trabalho pra fazer pro curso tecnico que faço e não sabia como usar o banco com interface grafica.
    Valeu, vei a calhar memos.

  2. #2 por Fabio Mattes em 13/03/2011 - 14:22

    Rapaz, muito util seu tutorial.
    Só um adendo, na classe ContatoDao a string de busca está setada para buscar por id, portanto eu alterei o sql do mesmo para a busca por nome:

    Antes => String select = “SELECT * FROM contatos WHERE id = ?”;
    Depois de alterar => String select = “SELECT * FROM contatos WHERE nome = ?”;

    Muitissimo obrigado.

  3. #3 por MBallem em 13/03/2011 - 15:25

    Legal que você gostou. Obrigado por participar.
    Só não consegui visualizar esse erro que você reportou, procurei para corrigir, mas tanto no post como no pdf está por nome a busca e não por id. Você está se referindo ao método findByName(String nome) do ContatoDao?

  4. #4 por Renato em 20/03/2011 - 23:05

    Muito bom o seu tutorial, meus parabéns.

    Eu participei de um projeto que não usou o padrão MVC ou qualquer outro padrão similar e todas as chamadas do banco de dados eram chamadas nas próprias telas. No início do desenvolvimento, era tudo rápido e funcional; ao chegar perto do término do projeto, quando o cliente passou a fazer exigências mais complexas, o tempo de manutenção passou a ser cada vez maior. E o pior, o projeto teve a parte Web e Mobile, e ambos tiveram que ser construídos do ponto zero absoluto, rs.

    A Orientação a Objetos, no início, é bem custosa, mas lhe dá um potencial gigante posteriormente. Vale muito a pena o custo benefício.

    Abraços! Continue escrevendo mais artigos.

  5. #5 por MBallem em 20/03/2011 - 23:54

    Pois é Renato, muita gente quando começa a programar acha besteira usar uma padrão como o MVC.
    Acham mais custoso o processo, e talvez até seja para um projeto pequeno, mas no futuro quando o projeto começa a crescer, as dificuldades começam a aparecer por conta de não usar. E fora que com o MVC podemos fazer reuso de muita coisa em novos projetos.

  6. #6 por Mauricio Carvalho em 29/03/2011 - 18:23

    Muito bom o Material , Simples e Objetivo … Otima Pratica de Programação em MVC para quem esta começando …. Ainda mais se esta começando Programando com otimas praticas como no totorial , ja penso em video – aulas eu seria um dos compradores ou com certeza assistiria e me cadastraria em um canal no YouTube …. Até mais continue assim

  7. #7 por MBallem em 29/03/2011 - 18:51

    Legal que gostou do material Mauricio. Não pensei em video-aulas, mas quem sabe né…

  8. #8 por Ana Cláudia em 31/03/2011 - 21:39

    Oi,

    Seus tutoriais são otimos…

  9. #9 por MBallem em 01/04/2011 - 12:27

    Obrigado. Não deixe de aparecer por aqui então.
    T+

  10. #10 por sou eu em 29/06/2011 - 12:45

    eu não gostei! Nem sequer funciona! o autor podia ter-se dado ao trabalho de colocar todo o projeto para download.

  11. #11 por MBallem em 29/06/2011 - 14:13

    “sou eu”, obrigado pelas criticas. Agora exponha o que não funciona exatamente para que seja consertado isso.
    Sobre colocar o projeto para download, ele está todo ai. Todas classes e métodos. É só criar o projeto e montá-lo como o material exemplifica.

  12. #12 por fabiomattes2007 em 08/07/2011 - 14:38

    Acho que me equivoquei, hehehe, devo ter lido o do método excluir e acabei me confundindo?

    Foi mal.

  13. #13 por Leandro em 21/08/2011 - 0:31

    Marcio acredito que ficaria mais perfeito se o metodo exlcuir, quando o contato fosse localizado este mesmo pudesse ser excluido.

    Mais uma vez Parabéns pelo Blog

  14. #14 por MBallem em 21/08/2011 - 13:43

    Leandro, é bem por ai. Cada um pode implementar os métodos da maneira que achar melhor para o seu projeto.
    Obrigado pelo comentário.

  15. #15 por Eduardo em 24/08/2011 - 9:00

    Cara seu codigo funciona muito bem dentro da IDE mas quando eu transformo ele em um arquivo .jar ele da o seguinte erro na hora de executar

    Conectando ao Banco de Dados
    Exception in thread “main” java.lang.RuntimeException: com.mysql.jdbc.exceptions.MySQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘????????????????’ at line 1
    at cadastro.dao.ConnectionDataBase.getConnection(ConnectionDataBase.java:37)
    at cadastro.dao.GenericDao.(GenericDao.java:19)
    at cadastro.dao.DadosDao.(DadosDao.java:15)
    at cadastro.controller.DadosController.listaDados(DadosController.java:65)

    Alem de Alguns erros com o mysql como
    at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1049)

    Nao alterei quase nada do seu codigo, a nao ser alguns parametros, acredito que o problema esteja sendo no getConnection, pode me dar uma luz ae, quer q eu mande codigo?

    Se poder ajudar vlw!!

  16. #16 por MBallem em 24/08/2011 - 12:08

    Oi Eduardo,
    fiz um teste aqui e gerei um JAR desse projeto. Funcionou sem problemas.
    Reveja as alterações que você fez.
    Da uma olhada na sua classe DadosController e na classe DadosDao. Sua exeção é MySQLSyntaxErrorException parece ser problema de sintaxe com o banco.
    Uma pergunta. Você está usando Linux ou Windows? Parece que com linux quando esse problema acontece é necessário alterar a string de conexão para:
    DriverManager.getConnection(“jdbc:mysql://localhost:3306/banco?useUnicode=yes&characterEncoding=UTF-8”, “root”, “” );
    Veja que esse trecho foi adicionado: ?useUnicode=yes&characterEncoding=UTF-8

  17. #17 por Leandro em 30/08/2011 - 16:59

    Parabéééns Guri !! Show de bola esse sisteminha..Simples e útil !! Continue assim..
    Abraaaço

  18. #18 por angeliskii em 12/11/2011 - 14:26

    Cara, tutoriais incriveis. Acontece o seguinte, estou usando ele como base para montar uma aplicação, mas na parte do ALTERAR, tem um parametro que é o id da coluna, só que nao “entendi” o que é esse ID, e se eu coloco um numero no lugar apenas por teste. ele resulta isso:
    O índice da coluna está fora do intervalo: 4, número de colunas: 3.
    Ja coloquei tudo q pude imaginar ali, será que você poderia me dar uma luz? Abraço!

  19. #19 por MBallem em 12/11/2011 - 17:10

    Olá angeliskii, bom que gostou do tutorial.
    O id é o identificador da coluna (chave primaria da tabela). Você deve passar o id para que o método que realiza o update saiba qual linha deve ser alterada no banco de dados.

  20. #20 por angeliskii em 13/11/2011 - 14:54

    Eu imaginei que fosse isso. Mas mesmo assim não da certo. Vamos ver se eu entendi correto, o valor do id tem de ser IGUAL ao valor que se encontra na coluna da chave primaria, certo?
    se lá estiver “AB”, eu tenho de passar o id=”ab”, numa suposição claro.
    O problema é esse, ele da que o indice esta fora do intervalo.
    na instrução
    pstmt.setObject(parametros.length + 1, id);
    eu tirei o +1 e deixei só
    pstmt.setObject(parametros.length, id);
    Eis que o erro muda:
    ERRO: duplicar valor da chave viola a restrição de unicidade “pk_codigo_login”
    Detalhe: Chave (codigo_login)=(3) já existe.

    o Problema é, não tenho esse valor na coluna.” Mas isso é um uptade cara..”, eu sei, só que se eu tento com valores que lá existem, ele retorna esse erro tambem. Se é um uptade, ele não devia ignorar o fato do valor já existir?

    cara, desculpa incomoda você, mas é que eu realmente to quebrando a cabeça com isso…

  21. #21 por angeliskii em 13/11/2011 - 15:04

    \o/
    Achei!
    eu tava comendo bola na hora do sql, tava passando parametros errados para a execução e esquecendo do where no fim, o que resultava em coisas fora do lugar.
    Anyway…
    Muito Obrigado pela atenção, e espero que venham muitos tutoriais como esse.

    Abração!

  22. #22 por MBallem em 13/11/2011 - 16:39

    Ok angeliskii. Legal que você resolveu.

  23. #23 por Mauricio Carvalho em 20/01/2012 - 16:59

    PARABENS !

  24. #24 por MBallem em 20/01/2012 - 17:10

    Valeu Mauricio, obrigado!

  25. #25 por Rombe em 28/01/2012 - 3:27

    Eu estimei muito o seu gesto.obrigado

  26. #26 por MBallem em 28/01/2012 - 10:48

    Obrigado Rombe.

  27. #27 por Thomas em 22/02/2012 - 11:21

    Bom dia, parabéns pelo artigo. Muito bom.

    Um dúvida. Porque você cria uma instância a cada ação do usuário (evento) ?

    Abraço, obrigado.

  28. #28 por MBallem em 22/02/2012 - 11:45

    Olá Thomas. Eu uma instância para ter acesso aos métodos de ContatoController. Se eu não tiver uma instancia o acesso aos métodos iria gerar uma exceção NullPointerException.

  29. #29 por Thomas em 22/02/2012 - 12:35

    MBallem, isso eu entendo. Eu não entendo porque você cria o Controller a CADA evento.
    Obrigado pela resposta rápida.

  30. #30 por MBallem em 22/02/2012 - 14:26

    Você poderia criar um atributo “private ContatoController cc;” e nos métodos fazer apenas:
    “cc = new ContatoController;”
    Ou então já criar o objeto no próprio atributo:
    “private ContatoController cc = new ContatoController;”

    A opção fica com você. Eu prefiro criar a instancia no método, já que no fim da execução do método ela é destruída pela JVM e assim eu não ficou com o objeto sempre na memória.

  31. #31 por Thomas em 22/02/2012 - 14:32

    Agora sim, entendido.
    Um abraço e obrigado mais uma vez!

  32. #32 por bdmstyle em 27/02/2012 - 9:07

    Cara esse artigo esta bem lega mais a VIEW tem alto acoplamento com o controller, fora que o main ta dentro da tela “VIEW”, tem logica na tela…

    se a view não esta isolada não ta em MVC completamente.

  33. #33 por MBallem em 27/02/2012 - 9:59

    Oi bdmstyl!
    Sobre o método main eu não levei mesmo em consideração por ter apenas uma View, valeu pela observação, passou despercebido.
    Sobre o alto acoplamento, teria uma sugestão para esse caso? Já que preciso de alguma forma acessar o Controller para ter acesso a seus métodos.

  34. #34 por Welington em 04/03/2012 - 1:14

    acho q tem um pequeno erro,
    ele ao inves de alterar o nome ele cria outro nome.

  35. #35 por MBallem em 04/03/2012 - 10:56

    Olá Welington,
    Se alterar um registro, é impossivel criar um novo porque a instrução UPDATE do SQL não
    cria uma nova linha na tabela.
    O que pode ter acontecido é você ter um nome “Joao Paulo” e adicionar “Silva”, ficando “Joao Paulo Silva” e clicar no botão Salvar. Ele então vai salvar um novo contato.
    Mas se clicar em Alterar, ele vai alterar o registro.

  36. #36 por Helder em 14/03/2012 - 13:01

    MBallem Parabéns pelo excelente tutorial!!!!
    era isso que eu estava procurando, quando executei deu um erro mas era porque uso linux.
    só fiz a mudança que você falou em uma postagem atraz e pegou legal.
    esse tutorial será de grande ajuda pra mim pois não tenho ninguém pra me ensinar e tá muito foda aprender Java sozinho.
    Muitíssimo Obrigado mais uma vez e até mais.

  37. #37 por MBallem em 14/03/2012 - 14:43

    Legal que foi útil pra você Helder.
    T+

  38. #38 por diego em 09/04/2012 - 17:32

    Excelente post, mostrou de maneira simples, porém necessário para um bom entendimento de GUI com BD, além de arquitetura MVC. Entendi muito bem tudo que foi abordado, tirou muitas dúvidas minhas inclusive sobre utilização de swing e eventos.
    Continue assim Marcio, se preocupando com o leitor.
    Parabêns.

  39. #39 por MBallem em 09/04/2012 - 20:10

    Muito obrigado pelo apoio diego. Continue aparecendo por aqui.
    T+

  40. #40 por Felipe em 22/05/2012 - 10:17

    Ótima Iniciatica Marcio seu Post é diferenciado não se acha mtos assim em Java ta tudo mto bem explicado passo a passo não conhecia seu blog a partir de hoje vou começar a acompanhar.

    Abraço

  41. #41 por MBallem em 22/05/2012 - 11:21

    Bom dia Felipe, obrigado pelo comentário, fico contente em saber que foi útil para você.
    Abraço!

  42. #42 por Ricardo em 05/06/2012 - 14:19

    Excelente post, me ajudou muito, era o que estava faltando na net. Ficou só uma duvida que não estou conseguindo resolver sozinho, pois sou iniciante. Como faço para gravar a Data com valor vazio no banco de dados? Desde já agradeço Ricardo

  43. #43 por MBallem em 05/06/2012 - 14:53

    Boa tarde Ricardo, valeu pelo apoio. É bom saber que o tutorial foi útil para você.
    Sobre sua dúvida, dai essa questão deve ser resolvida no banco de dados. Você precisa criar o campo da data no banco de forma que ele aceite valor null, ou seja, não use “not null” na hora de criar a coluna da data no banco de dados.

  44. #44 por Ricardo em 05/06/2012 - 16:08

    Obrigado pela resposta tão rápida, mas não estou conseguindo…, minha tabela esta assim: DATA_NASCIMENTO` date default NULL, (eu peguei seu exemplos e fiz na base do Ctrl+C – Ctrl+V) pra ver se ele conseguia guarda somente o nome e o apelido e dá erro. Se conseguir me ajudar com este problema eu agradeço muitissimo. Abraços

  45. #45 por MBallem em 05/06/2012 - 16:15

    Ricardo, no meu exemplo e setei o campo assim: “DATA_NASCIMENTO` DATE NOT NULL”, ou seja, ele não aceita valor null. Você vai precisar alterar o campo, criar ele novamente sem usar o “NOT NULL”.

  46. #46 por Ricardo em 05/06/2012 - 18:30

    Olá MBallem, meu banco já está com a data Defaut null, quando clico em salvar aparece mensagem Data esta com formato invalido – unparseable date:”” – Desde já agradeço sua ajuda, espero que me desculpe o meu pouco conhecimento de Java, mas um dia chego lá…

  47. #47 por MBallem em 05/06/2012 - 21:05

    Ricardo, agora entendi o problema. Todo caso, você vai ter que deixar a coluna no banco aceitando null. Depois, no método salvar() do controller, você pode criar um teste, um if/else, se o valor data chegar preenchido chama o método que formata a data, como acontece no momento. Senão, se chegar vazio, então você insere o valor null.

    Também deverá modificar o método onClickLocalizar, nele a data que é recebida do banco também é reformatada para ser exibida na interface. Então vai ter que fazer algo parecido, criar um teste para que uma exceção não seja lançada quando o método receber a data com valor null do banco de dados.

  48. #48 por Ricardo em 07/06/2012 - 23:58

    Ola Marcio, muito, mas muito obrigado mesmo pelas dicas, a primeira parte que era salvar no banco já consegui, agora vou em busca da outra parte, desde já agradeço a sua iniciativa e ajuda.

  49. #49 por Thiago em 03/08/2012 - 17:17

    Ótimo artigo, ajuda bastante pra quem está começando agora e conhecendo o padrão MVC. Será que teria algum exemplo com relacionamentos usando o mesmo padrão? (Como em um pedido onde devo selecionar quem é o cliente e gravar a informação)

  50. #50 por MBallem em 03/08/2012 - 20:16

    Oi Thiago, obrigado!

    No momento não tenho nenhum exemplo do tipo que você quer. Mas você teria, por exemplo, as classes Pedido, PedidoDao, PedidoController, Cliente, ClienteDao e ClienteController.
    E em sua interface, teria uma instancia de cada controller para acessar e gravar as informações necessarias.
    Você pode também ter um único controller se achar mais adequado, e nesse controller ter a chamada aos 2 dao’s.

  51. #51 por lucnick em 16/08/2012 - 12:37

    Muito bom, parabéns por compartilhar o conhecimento, eu que estou começando a aprender foi de grande valia, muito obrigado…

  52. #52 por MBallem em 18/08/2012 - 20:08

    Valeu lucnick. Que bom que o tutorial serviu para você.
    Abraço!

  53. #53 por cristiano em 25/09/2012 - 14:40

    Muito bom o codigo curti bastante e me ajudo muito tambem. Como voce fez para aparecer os valores do banco dentro da tabela ????

    vlwwww….

  54. #54 por MBallem em 25/09/2012 - 15:26

    Olá cristiano, como assim? Isso é apresentado no tutorial.

  55. #55 por cristiano em 02/10/2012 - 10:46

    Sim sim, desculpa pelo meu erro rs !….

    la na classe Generic…voce criou um protected void save(String insertSql, Object… parametros) throws SQLException {

    ESSE Object… parametros a função dele seria passar o objeto por parametro?

    vlwww !!!

  56. #56 por MBallem em 02/10/2012 - 14:50

    Olá Cristino. Esse parâmetro funciona como se fosse um array de objetos. Sendo assim, você pode passar vários parâmetros pelo método.

  57. #57 por cristiano em 18/10/2012 - 0:29

    cara, para ficar um exemplo Mais legal ainda, poe retornando todos os valores que tem no BD, em uma tabela. ficaria legal… vlww !!!

  58. #58 por MBallem em 18/10/2012 - 11:26

    Vamos ver, quem sabe eu faça isso uma hora dessas cristiano.

  59. #59 por cristiano em 25/10/2012 - 11:32

    amigo, eu to usando como estudos o seu exemplo logo acima, gostei muito.
    mas eu to com um problema .

    imagina 3 tabela no banco de dados.

    table1
    id_codigo
    nome

    table2
    id_codigo2
    endereco

    table3
    id_codigo
    id_codigo2

    Quando faço a inserção de dados nas table1 e table2, vai gerar o id_codigo e id_codigo2 Auto-increment. Entao eu tenho que pegar esses id_codigo e codigo2 e jogar para a table3 os respectivos ids…como faço isso ? me ajuda ae, to quebrando a cuca e nao consigo, vlw.

  60. #60 por Marcio Ballem (@Mballem) em 25/10/2012 - 12:03

    Olá cristiano. Você vai precisar guardar os id’s gerados em alguma variável para depois inserir na outra tabela.
    Da uma olhada nesse tutorial https://mballem.wordpress.com/2012/09/01/jdbc-com-relacionamento-n-n/ talvez de dê uma ideia melhor de como fazer.

  61. #61 por cristiano em 25/10/2012 - 14:02

    Puts cara, me ajudo muito. vlw cara agradeço muito.

  62. #62 por cristiano em 27/10/2012 - 2:17

    ola amigo eu denovo rs…

    gostei muito do seu trabalho por aqui.

    voce tem mais tutoral de MVC java swing para me ajudar, precisa de mais informação para fazer umas adaptaçoes aqui fazendo favor ??

    Obrigadão !!..

  63. #63 por MBallem em 27/10/2012 - 20:28

    Oi Cristiano! No momento não tenho nenhum outro tutorial de MVC com Swing.

  64. #64 por cristiano em 08/11/2012 - 15:07

    ola amigo eu denovo por aqui !!!

    to com problemas de login e senha mvc.

    nao sei por onde começar, sera que voce pode me ajudar ??

    Obrigado amigo vlw.

  65. #65 por MBallem em 08/11/2012 - 16:06

    Olá cristiano, o que posso te dizer, é: você precisa criar um tela para digitar o login e a senha, essa tela será a view. Você terá um controller que recebe as informações da tela de login e nesse controller fará uma chamada ao método de consulta (service/dao) que vai verificar se existe esse usuário no banco de dados. O bom é você ter um retorno boleano, para enviar para a view como resposta.
    Depois na view, você faz um lógica para retornar para o usuário a mensagem de login invalido ou então entrar na aplicação se for valido.

  66. #66 por cristiano em 09/11/2012 - 13:56

    Obrigado denovo cara…

    fiz tudo isso e deu certo. hahahah

    Agradeço muito. Obrigado.

  67. #67 por Rodrigo em 19/11/2012 - 13:49

    Ae man, to com uma duvida..
    meu metodo alterar esta igual o seu.. porem no meu JFrame to com dificuldades em setar o
    id para saber qual registro vai ser alterado,.. ?! oque vc fez ali acho que não serve pro meu projeto pois não tenho esses metodos ‘proximo, anterior’, oq quero apenas é alterar o registro.

  68. #68 por MBallem em 19/11/2012 - 14:41

    Oi Rodrigo, se você não tem o Id na view, mude seu método update, crie uma cláusula “where” nele para alterar pelas colunas que você tem, ao invés de alterar pelo Id como no meu exemplo.

  69. #69 por Rodrigo em 19/11/2012 - 16:25

    O do seu exemplo é parecido com esse:

    “UPDATE RELPRODUTOS ” +
    “SET produto = ?, operador = ?, turno = ?, lote = ?, volume = ?,” +
    “quantidade = ?, dataEntrada = ?, dataSaida = ? WHERE id = ?”

    Então quer dizer que tem como alterar pelas colunas.. eu sempre alterei pelo id
    tem como vc dar uma idéia? seria no caso no ‘WHERE id = ?’ no lugar do id, tipo as colunas? como assim..?

    Obrigado.

  70. #70 por MBallem em 19/11/2012 - 17:20

    Sim, na verdade você usa o “where” para encontrar a linha na tabela que deseja alterar. O id é usado por padrão porque ele é uma chave única, e assim, não acontecerá de você ter duas linhas com o mesmo registro. Mas você pode usar qualquer outro campo, ou mesmo todos os campos, mas poderá ocorrer de ter linhas com os mesmos dados, e dai todas essas linhas podem acabar sofrendo o update.

    “UPDATE RELPRODUTOS ” +
    “SET produto = ?, operador = ?, turno = ?, lote = ?, volume = ?,” +
    “quantidade = ?, dataEntrada = ?, dataSaida = ? WHERE produto = ? and operador = ? and turno = ? and lote = ? and volume = ? and quantidade = ? and dataEntrada = ? and dataSaida = ?”

  71. #71 por Rodrigo em 20/11/2012 - 10:23

    Ah claro entendi, mas ai precisaria fazer alguma modificação nesse método né?!

    protected void update (String updateSql, Object id, Object…parametros) throws SQLException{
    PreparedStatement pstmt = getConnection().prepareStatement(updateSql);
    for (int i = 0; i < parametros.length; i++) {
    pstmt.setObject(i+1, parametros[i]);
    }
    pstmt.setObject(parametros.length + 1, id);
    pstmt.execute();
    pstmt.close();
    }

  72. #72 por MBallem em 20/11/2012 - 10:34

    Sim Rodrigo, vai precisar mudar o método, porque ele está usando o id cláusula where.

  73. #73 por Rodrigo em 20/11/2012 - 11:46

    Blz, vo dar uma estudada, mas tb tem um jeito de eu fazer um outro método e buscar pelo id.. ai tipo no JFrame tem algum jeito de eu busca o id pelo objeto ou algo assim?

    Obrigadão pela força!!!

  74. #74 por MBallem em 20/11/2012 - 12:19

    Rodrigo, você pode ter qualquer atributo de um objeto no seu frame, basta que você faça uma consulta para isso.

    Se você está fazendo um update, você deve ter recuperado os dados do banco antes, exibido os dados em sua tela (frame). Para então poder alterar os campos que deseja.

    Se você fez isso, você poderá também ter acesso ao Id, porque o id vem junto na consulta.

  75. #75 por Rodrigo em 20/11/2012 - 18:44

    Sim entendo, só que meu projeto é um pouco diferente.. acho que se vc desse uma olhada no meu código entenderia porque estou com esse problema.
    Acho que ficaria muito grande se eu postasse aqui então ta nesse link se quiser dar uma olhada..

    http://www.guj.com.br/java/287594-setar-id-do-registro-para-alterar-lo-no-swing#1521151

    Criei esse tópico no forum java (GUJ), não sei voce ja viu ele alguma vez..

    Na Classe ControleFrame eu apenas tenho o objetivo de salvar e atualizar os dados, uma busca eu só faço em uma outra tela, responsável por mostra todos os registros.

  76. #76 por MBallem em 20/11/2012 - 21:02

    Olhei seu código no guj. a unica forma de você ter o id é se você fizer um consulta no banco, caso contrário, só se você guardar de cabeça todos os id para digitar na tela, hehe 😉

    Para salvar um registro você não precisa de nada, além dos novos dados, mas para alterar ou remover um registro, você precisa primeiro recuperar o registro do banco para saber o id dele e então alterar ou remover.

    Ou você muda o seu sistema ou não vai conseguir alterar por id. O ideal quando for altera é primeiro localizar o registro, passar os dados do registros para os campos referentes na tela e então alterar os dados, e após isso enviar para o dao. Mas se você não localizar os dados antes, não tem como saber o que está alterando.

  77. #77 por Rodrigo em 21/11/2012 - 17:11

    Claro! esse é meu principal problema, viajem total… como eu ia dizer oq é pra alterar sem uma busca…
    como ainda sou iniciante em Swing com jdbc.. tudo oq sei e fiz até agora aprendi em casa sozinho, não fiz nenhum curso para java desktop, oq estudei foi so pra web..
    to com umas ideias aqui de como resolver meu problema, vou fazendo e tentando, qualquer coisa eu posto aqui..

    Esse seu turtorial é excelente para iniciantes!, eu é que to patinando um pouco.

  78. #78 por MBallem em 21/11/2012 - 17:33

    Ok, sem problemas.

  79. #79 por Rodrigo em 22/11/2012 - 23:59

    Aqui no meu projeto eu faço o seguinte, tenho uma tela principal que nela eu faço consultas no banco jogando para um combobox( mas isso n vem ao caso), e ai eu inicio a segunda tela o ControleFrame (a do guj que vc viu), assim que inicia eu pego os valores dos combobox e passo para texts dessa tela.. entende.., n faço consulta e esses valores dos texts do ControleFrame vão pra outra tabela do banco, ou seja, eu só salvo esse valores no banco e não faço nenhuma consulta porque os valores vem da primeira tela. Ai eu to patinando muito pra conseguir alterar os registros, porque eles ja vem da outra tela e a intenção é verificar o nome dele, se não existir salva e se existir altera..
    Não sei se deu pra entender,, Abraços.

  80. #80 por MBallem em 23/11/2012 - 10:17

    Se você vai alterar pelo nome, não precisa do id, mas deve ter garantias no seu banco de dados que cada nome será único. Você não poderá ter dois “João da Silva” salvo no banco. Para criar essa garantia, você deve criar a coluna Nome da sua tabela como Unique. Dai ao invés de ter no update “where id = ?” vai ter “where nome = ?”.

    Se você precisa alterar pelo id, passe o id pelo combobox também para a 2ª tela.

  81. #81 por Rodrigo em 27/11/2012 - 10:53

    Acho que sei uma solução, segue raciocinio .. como eu estou passando os valores do combobox pros texts então é claro que eu posso passa o id ou o nome.. passo pra uma constante seila.. e passo pro método… correto?!.. como vc falou

  82. #82 por MBallem em 27/11/2012 - 11:57

    Oi Rodrigo, pode fazer isso sim.

  83. #83 por Rodrigo em 27/11/2012 - 13:53

    Só que, como vou fazer pra passa o id juntamente com o nome pra segunda tela?

  84. #84 por Rodrigo em 27/11/2012 - 14:01

    no combobox**

  85. #85 por Rodrigo em 27/11/2012 - 14:03

    e tb a questão é, se estou fazendo uma busca no banco pra preencher o combo, em uma busca a id vem junto, como faz pra pegar essa id que vai juntamente com o nome do produto preenchendo o combobox..

  86. #86 por MBallem em 27/11/2012 - 14:17

    Rodrigo, da mesma forma que você pega o nome.
    Veja que da maneira que você está tentando fazer está ficando cada vez mais complicado para você resolver seu problema. Talvez seja a hora de você repensar em outra maneira de fazer esse processo.

  87. #87 por Rodrigo em 27/11/2012 - 14:54

    na verdade não tem complexidade, oq seria ‘complexo’ nesse projeto ja está pronto… é que explicar um projeto desse tamanho qualquer um se enrrola, tava quase finalizando ele, só que me enrrolei nesse problema ai ( que é simples -.-‘)

  88. #88 por Geison em 04/12/2012 - 21:32

    Amigo não estou conseguindo rodar na minha maquina. Tenho o Xamp. O que voce acha que pode ser??

  89. #89 por MBallem em 04/12/2012 - 21:48

    Olá Geison. Eu não conheço o Xamp, utilizo o Wamp. Não sei como o Xamp trabalha. Mas qual erro está acorrendo?

  90. #90 por Geison em 04/12/2012 - 21:53

    O erro é esse:
    Conectando ao Banco de Dados
    java.lang.ClassNotFoundException: com.mysql.jdbc.Driver
    at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
    at java.lang.Class.forName0(Native Method)
    at java.lang.Class.forName(Class.java:186)
    at br.barddal.dao.Conexao.getConnection(Conexao.java:19)
    at br.barddal.dao.GenericDao.(GenericDao.java:13)
    at br.barddal.dao.ContatoDao.(ContatoDao.java:13)
    at br.barddal.pojo.ContatoControle.listaContatos(ContatoControle.java:42)
    at br.barddal.gui.ContatoFrame.(ContatoFrame.java:25)
    at br.barddal.gui.ContatoFrame.main(ContatoFrame.java:279)
    Exception in thread “main” java.lang.NullPointerException
    at br.barddal.dao.ContatoDao.findContatos(ContatoDao.java:37)
    at br.barddal.pojo.ContatoControle.listaContatos(ContatoControle.java:44)
    at br.barddal.gui.ContatoFrame.(ContatoFrame.java:25)
    at br.barddal.gui.ContatoFrame.main(ContatoFrame.java:279)

    Se tiveres um email te passo certinho o que eu fiz te passo em prints!!
    Desculpa estar te incomodando!!

  91. #91 por MBallem em 04/12/2012 - 22:04

    Geison, seu problema é com o Driver do MySQL, veja o seu erro:
    java.lang.ClassNotFoundException: com.mysql.jdbc.Driver

    Sua aplicação não está encontrando o driver. Você adicionou ele no projeto?
    NO item 1. Arquivos necessários do tutorial eu falo sobre isso.

  92. #92 por Geison em 04/12/2012 - 22:11

    Amigo eu só tenho um probleminha, agora que me lembrei. Eu não posso usar nenhuma Mysql, tenho que usar o hsqldb.jar. Tem alguma diferença para fazer? Pois só posso usar o hsqldb
    É um trabalho final que to tentando fazer da faculdade!

  93. #93 por MBallem em 04/12/2012 - 22:18

    Se vai usar o HSQLDB, dai o Wamp ou Xamp não devem funcionar para você. Você vai precisar baixar o driver do HSQLDB ao invés do driver do MySQL.

    Da uma olhada nesse tutorial: https://mballem.wordpress.com/2011/02/02/jdbc-com-banco-de-dados-standalone/

    Nele eu tenho um exemplo sobe o uso do HSQLDB em modo standalone ou embarcado. Caso precise no modo servidor, entre no site do HSQLDB e veja como instalar.

  94. #94 por Geison em 04/12/2012 - 22:29

    A ok eu vou dar uma olhada nesse seu tutoria então!!!
    amigo desculpa o incomodo e muito obrigado pela ajuda!!!!

  95. #95 por David em 16/01/2013 - 13:27

    Estava atras de algo assim, muito bom.(Continue escrevendo parabéns)

  96. #96 por MBallem em 16/01/2013 - 15:16

    Obrigado pela visita David. Legal saber que o tutorial tenha sido útil para você.

  97. #97 por Diego em 09/04/2013 - 11:28

    Excelente Tutorial, ajudou de mais na organização de código entre muitas outras coisas. Esse tipo de material é muito difícil de achar. Continue com esse trabalho Excelente.

  98. #98 por MBallem em 09/04/2013 - 11:49

    Obrigado Diego, fico contente em saber que o material foi útil para você.

  1. Utilizando Swing com JPA/Hibernate « Programando com Java
  2. Utilizando Swing com Hibernate (SessionFactory) « Programando com Java
  3. JTable com Banco de Dados | Programando com Java
%d blogueiros gostam disto: