Criando classe Java para conectar e manipular dados no MySQL

Este artigo mostra como criar classes para comunicação com o banco de dados MySQL. Criaremos duas classes, a primeira fará a conexão com o banco de dados e a segunda fará o papel de uma query que permitirá a manipulação de dados. Estas classes poderão ser reutilizadas em outras aplicações Java.

[ Hits: 109.250 ]

Por: Allan kardec Santos Oliveira em 11/10/2006


Criando a classe MysqlQuery



A classe MysqlQuery possui vários métodos para manipulação de dados. Veja o código completo:

//classe para conectar com MySQL.
//Criado por Allan Kardec (Graduado em Matemática)
import java.sql.*;
public class MysqlQuery {

//Declarando as variáveis publicas
public Connection Database = null;
public boolean status;
public ResultSet rs;
public Statement stm;
private boolean statusreg =true;
// fim da declaração

public MysqlQuery(Connection Db){
    try {
        Database=Db;
        stm = Database.createStatement();          
        status = false;        
    } catch(SQLException e) {
        e.printStackTrace();
        System.out.print("Erro ao criar Query!");
    }  
}
public void open(String sql) {
   try {
        rs= stm.executeQuery(sql);        
        status = true;    
    } catch(SQLException e) {
        status = false;
        System.out.print("Erro ao executar Query!");
        e.printStackTrace();
    }  
}
public void execute(String sql) {
   try {
        stm.execute(sql);        
        status = true;    
    } catch(SQLException e) {
        status = false;
        System.out.print("Erro ao executar Query!");
        e.printStackTrace();
    }  
}
public String fieldbyname(String field){
String value = null;
    try {        
       if(rs.getString(1)!=null) status=false;
       if(status) rs.next();
       value = rs.getString(field);
       status=true;
    } catch(SQLException e) {
        System.out.println("Field invalido!");
    }
    return value;
}

public int recordcount(){
int tot=0;
    try {
      rs.first();        
      do {
      tot++;
      } while(rs.next());      
    } catch(SQLException e) {
        status = false;
        System.out.print("Erro ao executar Query!");
        e.printStackTrace();
    }  

return tot;
}
public boolean next(){
boolean retorno=false;
  try {        
        if(rs.next()){retorno=true;}
        
    } catch(SQLException e) {
        System.out.print("Erro ao executar Query!");
    }  
return retorno;
}

public boolean prev(){
  boolean retorno=false;
  try {        
        if(rs.previous()){retorno=true;}
    } catch(SQLException e) {
        System.out.print("Erro ao executar previous!");
    }  

return retorno;
}
public boolean first(){
  boolean retorno=false;
  try {        
        if(rs.first()){retorno=true;}
    } catch(SQLException e) {
        System.out.print("Erro ao executar first!");
    }  

return retorno;
}

public boolean last(){
  boolean retorno=false;
  try {        
        if(rs.last()){retorno=true;}
    } catch(SQLException e) {
        System.out.print("Erro ao executar last!");
    }  

return retorno;
}
}

Salve este código fonte com o nome MysqlQuery.java. Para compilá-lo digite:

$ javac MysqlQuery.java

Será criado um arquivo com o nome: MysqlQuery.class

A classe já está pronta para ser utilizada.

Página anterior     Próxima página

Páginas do artigo
   1. Introdução
   2. Criando a classe MysqlDB
   3. Comentando sobre o código da classe MysqlDB
   4. Criando a classe MysqlQuery
   5. Comentando o código da classe MysqlQuery
   6. Construindo uma aplicação que utilize estas classes
Outros artigos deste autor

Construindo uma aplicação JDialog

Emulando o Internet Explorer no Slackware

Java Native Interface

Leitura recomendada

Hibernate - Persistindo dados como se fosse objetos

Imagens e áudio no banco de dados Oracle

Escrevendo aplicações com MySQL e Java

Arch Linux + NetBeans + MySQL + Oracle 10g

Trabalhando com Java e SQL (parte 1)

  
Comentários
[1] Comentário enviado por in54no em 11/10/2006 - 14:59h

Ola, super-root muito bom o artigo, vai me ajudar em umas coisas...
Será que voce pode me ajudar em mais uma coisa?

No caso eu queria usar com o PostgreSQL, mas antes eu tinha feio uns testes e não consegui, tem um lugar certo para colocar o driver do postgre etc...???
Valew té mais, fique com Deus!

[2] Comentário enviado por edivan em 11/10/2006 - 18:26h

No inicio até levei um susto com o codigo, mas ai na conclusão entendi o objetivo do artigo. É uma excelente atitude mostrar como as coisas são feitas por de baixo dos panos.

[3] Comentário enviado por djinx em 12/10/2006 - 14:42h

Isso sim é um artigo de qualidade, diferente dos tradutores de artigos de inglês para português que existem aqui.

[4] Comentário enviado por raypenna em 15/10/2006 - 01:49h

Excelente seu artigo, estava precisando disso aqui, é só mudar a conexão pra outro banco, como firebird e oracle. Espero que escreva um outro artigo, sobre como colocar esses dados num JTable e tratar os eventos como num dbgrid do delphi. Mas aí eu to querendo demais. rsrsrs
Parabens.

[5] Comentário enviado por super-root em 19/10/2006 - 14:42h

Obrigado pelos comentários pessoal!

[6] Comentário enviado por brejao em 15/02/2007 - 14:11h

Ahe, muito bom seu artigo, está de parabéns, me ajudou bastante, que estava precisando de ajuda na utilização de classes Java.
Um artigo bem diferente de alguns que se vê por aqui.... do tipo
"lero-lero".

;)

[7] Comentário enviado por kariokarap em 03/08/2007 - 10:24h

muito bom..

[8] Comentário enviado por kariokarap em 03/08/2007 - 11:47h

muito obrigidu pela ajuda.. ..
muito bom.. mesmo.. faleu
fui

[9] Comentário enviado por reunix em 02/04/2008 - 16:47h

Olá Allan, meu nome é Renato, seu Post é 100000..., porém estou com uma dificuldade.
estou utilizando o o pgAdminIII para admin meu banco PostGre, pois bem... no proprio pgAdmin para eu poder fazer referencia a uma tabela ou campo eu preciso utilizar aspas duplas " "
tipo select "Cli_Nome","Cli_Tel" from "Clientes". acompanhando e adaptando seu post consegui usar 90% dele, mas estou com dificuldade no metodo (FieldByName) sempre me retora que o campo expecificado nao existe, a tabela abre numa boa, consigui dá um First() um Last() tudo funciona, so no FieldByname() q ta o problema, ja tentei de varias formas: Fieldbyname("Cli_Nome") / Fieldbyname("\"Cli_Nome\"")
se poder me ajudar tbem tem esses topicos relacionados:

http://www.guj.com.br/posts/list/0/84809.java

agradeço!!
renato-muniz@hotmail.com

[10] Comentário enviado por yanalex em 04/09/2008 - 19:42h

valeu mano tava precisando

:D

rere

[11] Comentário enviado por removido em 23/12/2008 - 15:02h

Parabéns pelo artigo Allan.

Eu estava justamente olhando por um modelo de classe que fosse organizado e que não exigisse a criação de estruturas de dados externas à classe para manipular os resultados de uma consulta por exemplo.

Interessante.

Abraços!

[12] Comentário enviado por paulopugin em 25/05/2009 - 11:27h

fiz alguma coisa errada, o que foi??
desde já, obrigado!!!

----------
1. ERROR in teste.java (at line 8)
MysqlDB banco = new MysqlDB("jdbc:mysql://localhost/ats?user=root&password=325732");
^^^^^^^
MysqlDB cannot be resolved to a type
----------
2. ERROR in teste.java (at line 8)
MysqlDB banco = new MysqlDB("jdbc:mysql://localhost/ats?user=root&password=325732");
^^^^^^^
MysqlDB cannot be resolved to a type
----------
3. ERROR in teste.java (at line 10)
MysqlQuery query1 = new MysqlQuery(banco.conn);
^^^^^^^^^^
MysqlQuery cannot be resolved to a type
----------
4. ERROR in teste.java (at line 10)
MysqlQuery query1 = new MysqlQuery(banco.conn);
^^^^^^^^^^
MysqlQuery cannot be resolved to a type
----------
4 problems (4 errors)

[13] Comentário enviado por superturbal em 28/07/2011 - 15:14h

Muito bom mesmo. utilizei no netbeans 7 funcionou perfeito.
obrigado , pelas dicas ....


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts