|
||
|
|
| Conheça o Plugfeed | » Início » Programação » Java » Conexão com banco de dados --> |
|
Avaliação:
![]() ![]() ![]() ![]() | Publicado em: 10/06/2007Conexão com banco de dados
Dayvid Lima Desenvolvedor Java há mais de 5 anos, atualmente consultor java em empresa multinacional utilizando recursos avançados da tecnologia J2EE com servidores de aplicação em plataforma Solaris para gerenciamento de redes e integração de sistemas.
Conexão com banco de dados
Olá a todos, nesse artigo irei demonstrar como criar uma conexão com um banco de dados, estarei utilizando o MySQL mas esse modelo se aplica a qualquer outro banco, basta apenas para isso trocar o driver de acesso ao banco. O driver para mysql precisaremos baixar o arquivo mysqlDriver.zip no final desse artigo, ou de sua fonte original: http://dev.mysql.com/downloads/connector/j/3.0.html Pois para que funcione é necessário que o diretório "com" esteja no PATH da máquina ou seja informado no momento da execução através do parâmetro "-classpath". Para facilitar estou disponibilizando o arquivo mysqlDriver.zip que contém o driver, para rodar basta fazer o download do mesmo, colocar o arquivo .zip no mesmo diretório dos arquivos .java desse artigo e seguir as instruções demonstradas aqui. Para facilitar a vida de vocês, segue o script de criação da tabela que iremos utilizar no nosso banco MySQL: CREATE TABLE `usuario` ( `cod_usuario` INT( 11 ) NOT NULL AUTO_INCREMENT PRIMARY KEY , `nome` VARCHAR( 255 ) NOT NULL , `email` VARCHAR( 255 ) NOT NULL ) ENGINE = MYISAM ; Para não perder o costume segue primeiramente o código da aplicação e em seguida a explicação. Obs.: Esse método de mostrar primeiro o código e depois a explicação eu acabei adotando por dois motivos e uma experiência pessoal, primeiro que eu tenho todo o código a mão e segundo a explição faz referências ao código de forma que o código fique limpo e fácil de entender, e quando acesso algum site de tutorial ou artigos, eu prefiro que o código fique em uma forma de fácil acesso (copiar e colar por exemplo) do que ter que baixar um arquivo compactado com o mesmo. Gostaria da opinião de vocês leitores e amigos para que eu possa disponibilizar os códigos da melhor forma possível para todos. Bom vamos voltar ao que realmente interessa. Primeiro uma breve descrição da nossa aplicação, iremos desenvolver uma aplicação que recebe "comandos" e parâmetros para o mesmo, podemos informar os comandos: - incluir: que irá incluir um usuário em nossa base de dados - excluir: que irá excluir um usuario de nossa base de dados - listar: que irá listar os usuários cadastrados em nossa base de dados A aplicação está dividida em duas partes, uma classe com os dados de conexão com banco e os métodos para incluir, excluir e listar, e uma classe que controla os dados de entrada do usuário. Banco.java (classe com métodos do banco de dados) import java.sql.Connection; import java.sql.DriverManager; import java.sql.SQLException; import java.sql.ResultSet; import java.sql.Statement; public class Banco { private String DRIVER = "com.mysql.jdbc.Driver"; private String URL = "jdbc:mysql://localhost/teste"; private String USERNAME = "usuario"; private String PASSWORD = "senha"; private Connection conn; public Banco(){ // método construtor quando chamado já irá se conectar ao banco de dados try { Class.forName(this.DRIVER); this.conn = DriverManager.getConnection(URL,USERNAME,PASSWORD); } catch (ClassNotFoundException e){ System.out.println("Não foi possivel encontrar o driver de banco: " + e.getMessage()); } catch(SQLException e){ System.out.println("Erro ao conectar com o banco: " + e.getMessage()); } } public void listarUsuarios(){ // lista os usuarios cadastrados Statement stmt = null; ResultSet rs = null; // query que será executada String sql = "SELECT cod_usuario, nome, email FROM usuario"; try { // executa a query e guarda o resultado no RecordSet rs stmt = this.conn.createStatement(); rs = stmt.executeQuery(sql); // enquanto houver dados no RS, retira os campos desejados (cod_usuario, nome e email) e mostra na tela while(rs.next()){ // cod_usuario, nome e email são os nomes dos campos da tabela usuario System.out.println(rs.getString("cod_usuario") + " - " + rs.getString("nome") + " - " + rs.getString("email")); } } catch(SQLException e){ System.out.println("erro listando usuarios: " + e.getMessage()); } finally { try { // fecha o stmt e o rs if(stmt != null) stmt.close(); if(rs != null) rs.close(); } catch (SQLException e){ System.out.println("erro ao tentar fechar o stmt e o rs: " + e.getMessage()); } } } public void incluirUsuario(String nome, String email){ // inclui um usuario no banco de dados Statement stmt = null; // query que será executada String sql = "INSERT INTO usuario (nome, email) VALUES ('"+ nome + "','" + email + "')"; try { stmt = this.conn.createStatement(); stmt.executeUpdate(sql); System.out.println("usuário incluido com sucesso!"); } catch(SQLException e){ System.out.println("erro incluir usuario: " + e.getMessage()); } finally { try { // fecha o stmt if(stmt != null) stmt.close(); } catch (SQLException e){ System.out.println("erro ao tentar fechar o stmt: " + e.getMessage()); } } } public void excluirUsuario(String codUsuario){ // apaga um usuario do banco de dados Statement stmt = null; // query que será executada String sql = "DELETE FROM usuario WHERE cod_usuario='"+codUsuario+"'"; try { stmt = this.conn.createStatement(); stmt.executeUpdate(sql); System.out.println("usuário excluido com sucesso!"); } catch(SQLException e){ System.out.println("erro excluir usuario: " + e.getMessage()); } finally { try { // fecha o stmt if(stmt != null) stmt.close(); } catch (SQLException e){ System.out.println("erro ao tentar fechar o stmt: " + e.getMessage()); } } } // desconecta do banco de dados public void desconectar(){ try { if(this.conn != null) this.conn.close(); } catch(SQLException e){ System.out.println("Erro tentanto fechar a conexão com o banco: " + e.getMessage()); } } } UsaBanco.java (classe que controla as entradas do usuário) public class UsaBanco { public static void main(String[] args){ // define o objeto banco Banco banco = null; if(args.length < 1){ System.out.println("Você precisa informar o comando "incluir", "excluir" ou "listar" e seus argumentos quando necessário"); System.exit(0); } else { if(args[0].equals("incluir")){ System.out.println("Vai incluir"); if(args.length < 3){ System.out.println("Você precisa informar o nome e email do usuário a ser cadastrado"); System.out.println("Ex.: "); System.out.println(" java UsaBanco incluir Dayvid nome@dominio.com"); System.exit(0); } else { // os dados foram informados corretamente // vai incluir o usuario no banco // cria o objeto banco e chama o método para incluir um usuário banco = new Banco(); banco.incluirUsuario(args[1], args[2]); banco.desconectar(); } } else if(args[0].equals("excluir")){ System.out.println("Vai excluir"); if(args.length < 2){ System.out.println("Você precisa informar o codigo do usuário que deseja excluir"); System.out.println("Ex.: "); System.out.println(" java UsaBanco excuir 1"); System.exit(0); } else { // os dados foram informados corretamente // vai excluir o usuario no banco // cria o objeto banco e chama o método para excluir um usuário banco = new Banco(); banco.excluirUsuario(args[1]); banco.desconectar(); } } else if(args[0].equals("listar")) { System.out.println("vai listar os usuários"); // aqui listamos os usuários cadastrados no banco de dados // cria o objeto banco e chama o método para listar os usuários banco = new Banco(); banco.listarUsuarios(); banco.desconectar(); } else { System.out.println("Comando inválido, digite o comando "incluir" ou "listar"."); System.exit(0); } } } } Marcelo
Meus parabéns, muito bom o artigo, gostei bastante.
Abraço. ![]() ![]() ![]() ![]() ![]() Oswaldo <oswaldo.net@uol.com.br>
O artigo está muito bom, mas infelizmente ele também revela o descuido que até mesmo desenvolvedores experientes têm em relação à segurança. A instrução String sql = "DELETE FROM usuario WHERE cod_usuario='"codUsuario"'" jamais deveria ser executada sem uma validação contra o SQL Injection.
![]() ![]() ![]() ![]() ![]() laercio <laercio_21@yahoo.com.br>
Valeu cara, muito bom seu artigo continue assim!
![]() ![]() ![]() ![]() ![]() Tiago Hillebrandt <tiago@centralsbs.com.br>
Show de bola ;)
Parabéns pelo artigo! Ficou muito susse. Se possível, solicito que nos próximos tutoriais insira os fontes junto em anexo, valeu! ![]() ![]() ![]() ![]() ![]() John
Muito bom!
Soh uma dúvia.... Esse MysqlDriver, onde eu coloco ele? ![]() ![]() ![]() ![]() ![]() Renata <renata.64@gmail.com>
Legal esse artigo! Me ajudou bastante...
![]() ![]() ![]() ![]() ![]() Romulo Trindade <romulo.trindade@gmail.com>
Muito bom artigo, ajudou bastante!!!!
![]() ![]() ![]() ![]() ![]() Maria Helena <leninhavieiralira@hotmail.com>
Gostei muito do artigo, me ajudou bastante...
Abraços!!! ![]() ![]() ![]() ![]() ![]() Alberto <alb_csw@hotmail.com>
Oi Dayvid,
li seu artigo e achei muito bom. Estou tentando fazer uma conexão com um banco de dados(SQL, MySQL...ou outro qualquer) para, obviamente, guardar informaçoes de meu programa. Entretando não consigo fazer esta conexão e muito menos gravar informações. Quando executo a main ele solta o 1° 'System.out' e depois eu escrevo, via console, mas não consigo interagir com o código. Se voce pudesse me ajudar agradeceria, Desde já agradeço a atençao Aguardo contato, Alberto ![]() ![]() ![]() ![]() ![]() romulo moreira <romulo_hawk2@hotmail.com>
Muito bom, me arrependi de não ter achedo esse site antes...
Parabéns ![]() ![]() ![]() ![]() ![]() Helga <Helgafety@hotmail.com>
oi Dayvid adorei esse artigo eu tirei engenharia Informática e agora estou a fazer o mcts(sql server 2005) sei n ser muito a sua área mas gostaria de poder contar com mais artigos seus p ajudar-me a entender melhor esta ferramenta bjao sucessos.
![]() ![]() ![]() ![]() ![]() Renato Moita <renatomoitinho@yahoo.com.br>
parabens amigo, é de muita ajuda esse codigo e bem explicado.
valeu !! ![]() ![]() ![]() ![]() ![]() Renato <renato.r6@hotmail.com>
Foi em C# gostaria de ver em vb
![]() ![]() ![]() ![]() ![]() Eliza <liz_bulnes@hotmail.com>
Excelente este artigo
![]() ![]() ![]() ![]() ![]() ![]() |
![]() |
|
|