Conectar um formulário JFRAME à um Banco de Dados MySQL (Eclipse)

Pessoal, estou com um projeto no Eclipse e está funcionando tudo direitinho. Até o JFRAME tá rodando numa boa. O que estou querendo fazer, é com que o botão "Enviar" (JFRAME), se conecte com o MySql e insira os dados do meu formulário. Já tentei várias coisas aqui e não estou conseguindo. Gostaria que alguém pudesse me dar uma luz!!! ^^

Deixo abaixo os scripts:

[color=red]formulário.java [/color]

package com.controle;

import java.awt.Color;
import java.awt.Font;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;

import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
import javax.swing.SwingConstants;

import br.com.calixto.bean.Pessoa;

public class Formulario extends JFrame {
private static final long serialVersionUID = 1L;
private JPanel panel;
private JLabel labelTitle, lbNome, lbEndereco, lbFone, lbEmail;
private JTextField tfNome, tfEndereco, tfFone, tfEmail;
private JButton botaoEnviar;

public Formulario() {  
    super("Cadastro de Pessoas");  
    setSize(500, 300);  
    setLocationRelativeTo(getContentPane());  
    labelTitle = new JLabel("Formulário Pessoa");  
    labelTitle.setFont(new Font("TimesRoman",Font.BOLD,14));  
    labelTitle.setBounds(180, 6, 300, 20);  
    labelTitle.setForeground(Color.red);  
      
    lbNome = new JLabel("Nome: ", SwingConstants.RIGHT);  
    lbNome.setBounds(10, 30, 100, 20);  
      
    lbEndereco = new JLabel("Endereço: ", SwingConstants.RIGHT);  
    lbEndereco.setBounds(10, 60, 100, 20);  

    lbFone = new JLabel("Telefone: ", SwingConstants.RIGHT);  
    lbFone.setBounds(10, 90, 100, 20);  

    lbEmail = new JLabel("Email: ", SwingConstants.RIGHT);  
    lbEmail.setBounds(10, 120, 100, 20);  
      
    tfNome = new JTextField();  
    tfNome.setBounds(111, 31, 300, 20);  
      
    tfEndereco = new JTextField();  
    tfEndereco.setBounds(111, 61, 300, 20);  
      
    tfFone = new JTextField();  
    tfFone.setBounds(111, 91, 150, 20);  
      
    tfEmail = new JTextField();  
    tfEmail.setBounds(111, 121, 300, 20);  
      
    botaoEnviar = new JButton("Enviar");  
    botaoEnviar.setBounds(200, 180, 80, 20);  
    botaoEnviar.addActionListener(new ActionListener() {  
        public void actionPerformed(ActionEvent event) {  
            botaoEnviarActionEvent(event);  
        }  
    });  
      
    panel = new JPanel();  
    panel.setLayout(null);  
    panel.add(labelTitle);  
    panel.add(lbNome);  
    panel.add(lbEndereco);  
    panel.add(lbFone);  
    panel.add(lbEmail);  
      
    panel.add(tfNome);  
    panel.add(tfEndereco);  
    panel.add(tfFone);  
    panel.add(tfEmail);  
      
    panel.add(botaoEnviar);  
    getContentPane().add(panel);  
    getRootPane().setDefaultButton(botaoEnviar);
            
}  
  
private void botaoEnviarActionEvent(ActionEvent event) {  
    Pessoa pessoa = new Pessoa();  
    if(tfNome.getText() != null && tfNome.getText().length() > 0) {  
        pessoa.setNome(tfNome.getText());  
        System.out.println(pessoa.getNome());// Essas variaveis que estão sendo impressa vc grava no banco  
    }  
    if(tfEndereco.getText() != null && tfEndereco.getText().length() > 0) {  
        pessoa.setEndereco(tfEndereco.getText());  
        System.out.println(pessoa.getEndereco());  
    }  
    if(tfFone.getText() != null && tfFone.getText().length() > 0) {  
        pessoa.setFone(tfFone.getText());  
        System.out.println(pessoa.getFone());  
    }  
    if(tfEmail.getText() != null && tfEmail.getText().length() > 0) {  
        pessoa.setEmail(tfEmail.getText());  
        System.out.println(pessoa.getEmail());  
    }  
}  
  
public static void main(String[] args) {  
    Formulario formulario = new Formulario();  
    formulario.setVisible(true);  
    formulario.setResizable(false);  
    formulario.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);  
}  

}

[color=red]controle.java[/color]

package com.controle;

import java.io.IOException;
import java.io.PrintWriter;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import com.sun.corba.se.pept.transport.Connection;

import sun.misc.BASE64Encoder;

/**

  • Servlet implementation class Controle
    /
    public class Controle extends HttpServlet {
    /
    *

    */
    private static final long serialVersionUID = 1L;

    protected void doPost1(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
    response.setContentType("text/html;charset=UTF-8");

     PrintWriter out = response.getWriter();    
     String login = request.getParameter("login");    
     String senha = request.getParameter("senha");  
          
     byte chave1[] = login.getBytes();    
     byte chave2[] = senha.getBytes();    
         login = new BASE64Encoder().encode(chave1);    
         senha = new BASE64Encoder().encode(chave2);    
             
         try{    
     Class.forName("com.mysql.jdbc.Driver");  
       
     Connection con=(Connection) DriverManager.getConnection("jdbc:mysql://192.168.1.100:3306/dados","root","");    
     PreparedStatement stmt=((java.sql.Connection) con).prepareStatement("select * from endereco where login=admin and senha=admin");    
                 stmt.setString(1, login);    
                 stmt.setString(2, senha);    
                 ResultSet rs=stmt.executeQuery();    
                 while(rs.next()){    
                out.print("Acesso ok,login e senha confere");    
                 break;    
         }    
             
          }catch(Exception e){    
                  out.print(e.getMessage());    
          }    
          }    
    

    /**

    • @see HttpServlet#HttpServlet()
      */
      public Controle() {
      super();
      // TODO Auto-generated constructor stub
      }

    /**

    • @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
      */
      protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      // TODO Auto-generated method stub
      }

    /**

    • @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response)
      */
      protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
      // TODO Auto-generated method stub
      }

}

Ficarei mt grato em quem puder me ajudar!!! :smiley:

Abraços!

Ninguém vai se motivar muito a querer ajudá-lo se você deixar o código assim…

seu código aqui

formulário.java

package com.controle; 

import java.awt.Color; 
import java.awt.Font; 
import java.awt.event.ActionEvent; 
import java.awt.event.ActionListener; 

import javax.swing.JButton; 
import javax.swing.JFrame; 
import javax.swing.JLabel; 
import javax.swing.JPanel; 
import javax.swing.JTextField; 
import javax.swing.SwingConstants; 

import br.com.calixto.bean.Pessoa; 

public class Formulario extends JFrame { 
private static final long serialVersionUID = 1L; 
private JPanel panel; 
private JLabel labelTitle, lbNome, lbEndereco, lbFone, lbEmail; 
private JTextField tfNome, tfEndereco, tfFone, tfEmail; 
private JButton botaoEnviar; 

public Formulario() { 
super("Cadastro de Pessoas"; 
setSize(500, 300); 
setLocationRelativeTo(getContentPane()); 
labelTitle = new JLabel("Formulário Pessoa"; 
labelTitle.setFont(new Font("TimesRoman",Font.BOLD,14)); 
labelTitle.setBounds(180, 6, 300, 20); 
labelTitle.setForeground(Color.red); 

lbNome = new JLabel("Nome: ", SwingConstants.RIGHT); 
lbNome.setBounds(10, 30, 100, 20); 

lbEndereco = new JLabel("Endereço: ", SwingConstants.RIGHT); 
lbEndereco.setBounds(10, 60, 100, 20); 

lbFone = new JLabel("Telefone: ", SwingConstants.RIGHT); 
lbFone.setBounds(10, 90, 100, 20); 

lbEmail = new JLabel("Email: ", SwingConstants.RIGHT); 
lbEmail.setBounds(10, 120, 100, 20); 

tfNome = new JTextField(); 
tfNome.setBounds(111, 31, 300, 20); 

tfEndereco = new JTextField(); 
tfEndereco.setBounds(111, 61, 300, 20); 

tfFone = new JTextField(); 
tfFone.setBounds(111, 91, 150, 20); 

tfEmail = new JTextField(); 
tfEmail.setBounds(111, 121, 300, 20); 

botaoEnviar = new JButton("Enviar"; 
botaoEnviar.setBounds(200, 180, 80, 20); 
botaoEnviar.addActionListener(new ActionListener() { 
public void actionPerformed(ActionEvent event) { 
botaoEnviarActionEvent(event); 
} 
}); 

panel = new JPanel(); 
panel.setLayout(null); 
panel.add(labelTitle); 
panel.add(lbNome); 
panel.add(lbEndereco); 
panel.add(lbFone); 
panel.add(lbEmail); 

panel.add(tfNome); 
panel.add(tfEndereco); 
panel.add(tfFone); 
panel.add(tfEmail); 

panel.add(botaoEnviar); 
getContentPane().add(panel); 
getRootPane().setDefaultButton(botaoEnviar); 

} 

private void botaoEnviarActionEvent(ActionEvent event) { 
Pessoa pessoa = new Pessoa(); 
if(tfNome.getText() != null && tfNome.getText().length() > 0) { 
pessoa.setNome(tfNome.getText()); 
System.out.println(pessoa.getNome());// Essas variaveis que estão sendo impressa vc grava no banco 
} 
if(tfEndereco.getText() != null && tfEndereco.getText().length() > 0) { 
pessoa.setEndereco(tfEndereco.getText()); 
System.out.println(pessoa.getEndereco()); 
} 
if(tfFone.getText() != null && tfFone.getText().length() > 0) { 
pessoa.setFone(tfFone.getText()); 
System.out.println(pessoa.getFone()); 
} 
if(tfEmail.getText() != null && tfEmail.getText().length() > 0) { 
pessoa.setEmail(tfEmail.getText()); 
System.out.println(pessoa.getEmail()); 
} 
} 

public static void main(String[] args) { 
Formulario formulario = new Formulario(); 
formulario.setVisible(true); 
formulario.setResizable(false); 
formulario.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); 
} 
} 

controle.java

package com.controle; 

import java.io.IOException; 
import java.io.PrintWriter; 
import java.sql.DriverManager; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 

import javax.servlet.ServletException; 
import javax.servlet.http.HttpServlet; 
import javax.servlet.http.HttpServletRequest; 
import javax.servlet.http.HttpServletResponse; 

import com.sun.corba.se.pept.transport.Connection; 

import sun.misc.BASE64Encoder; 

/** 
* Servlet implementation class Controle 
*/ 
public class Controle extends HttpServlet { 
/** 
* 
*/ 
private static final long serialVersionUID = 1L; 

protected void doPost1(HttpServletRequest request, HttpServletResponse response) 
throws ServletException, IOException { 
response.setContentType("text/html;charset=UTF-8"; 

PrintWriter out = response.getWriter(); 
String login = request.getParameter("login"; 
String senha = request.getParameter("senha"; 

byte chave1[] = login.getBytes(); 
byte chave2[] = senha.getBytes(); 
login = new BASE64Encoder().encode(chave1); 
senha = new BASE64Encoder().encode(chave2); 

try{ 
Class.forName("com.mysql.jdbc.Driver"; 

Connection con=(Connection) DriverManager.getConnection("jdbc:mysql://192.168.1.100:3306/dados","root",""; 
PreparedStatement stmt=((java.sql.Connection) con).prepareStatement("select * from endereco where login=admin and senha=admin"; 
stmt.setString(1, login); 
stmt.setString(2, senha); 
ResultSet rs=stmt.executeQuery(); 
while(rs.next()){ 
out.print("Acesso ok,login e senha confere"; 
break; 
} 

}catch(Exception e){ 
out.print(e.getMessage()); 
} 
} 



/** 
* @see HttpServlet#HttpServlet() 
*/ 
public Controle() { 
super(); 
// TODO Auto-generated constructor stub 
} 

/** 
* @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) 
*/ 
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
// TODO Auto-generated method stub 
} 

/** 
* @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) 
*/ 
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { 
// TODO Auto-generated method stub 
} 

} 

Faltou eu postar a classe “Pessoa.java”


package br.com.calixto.bean;

public class Pessoa {
	
	private String nome;  
    private String endereco;  
    private String fone;  
    private String email;  
    
    public String getNome() {  
        return nome;  
    }  
    public void setNome(String nome) {  
        this.nome = nome;  
    }  
    public String getEndereco() {  
        return endereco;  
    }  
    public void setEndereco(String endereco) {  
        this.endereco = endereco;  
    }  
    public String getFone() {  
        return fone;  
    }  
    public void setFone(String fone) {  
        this.fone = fone;  
    }  
    public String getEmail() {  
        return email;  
    }  
    public void setEmail(String email) {  
        this.email = email;  
    }  
}  

Dei uma olhada por cima aqui… Antes de tudo, você tem algum formulário web que usará a classe Controle? Por que ela herda HttpServlet?

Dê uma olhada no seu import:

O import que você quer neste caso é do pacote java.sql (tanto que você está dando cast para a Connection deste pacote, provavelmente porque o Eclipse mandou…)

Mais uma coisa, o bind do PreparedStatement que você está fazendo vai estourar uma Exception pois você está dizendo que a query tem 2 parâmetros onde na verdade não tem nenhum… Corrija para:

Connection con = DriverManager.getConnection("jdbc:mysql://192.168.1.100:3306/dados","root",""; //sem o cast aqui PreparedStatement stmt = con.prepareStatement("select * from endereco where login=? and senha=?"; //e aqui stmt.setString(1, login); stmt.setString(2, senha); ResultSet rs=stmt.executeQuery(); ...

Obrigadão. O engraçado é q na hora de colar o “parênteses” antes do “;” não aparecia…


Connection con=(Connection) DriverManager.getConnection("jdbc:mysql://192.168.1.100:3306/dados","root","");    
	    PreparedStatement stmt=((java.sql.Connection) con).prepareStatement("select * from endereco where login=admin and senha=admin");    
	                stmt.setString(1, login);    
	                stmt.setString(2, senha);    
	                ResultSet rs=stmt.executeQuery();    
	                while(rs.next()){    
	               out.print("Acesso ok,login e senha confere");    
	                break;    
	        }    
	            
	         }catch(Exception e){    
	                 out.print(e.getMessage());    
	         }    
	         }    

Como eu deixo sem o cast?

Queria só um exemplo de inserção de dados pelo botão (JFRAME) ao MySql…

Para deixar sem o cast você deve importar o Connection correto (do pacote java.sql).

Eu não entendi muito a moral dessa sua classe Controle. Tente fazer uma classe PessoaDAO que faça o CRUD de Pessoa e tente separar o que é da parte Pessoa e da parte de Usuario… Você tem um formulário de Pessoa e está fazendo uma query que não tem nada a ver com Pessoa… Não entendi o que você está tentando fazer…

Erico, o que eu quero fazer mesmo é um simples formulário que possa se conectar ao MYSQL. No formulário, ao clicar no botão “Enviar”, seria inserido no Banco, os campos digitados. Se puder me ajudar com apenas um campo do formulário, o resto eu me viro!!! 8)

Pense que você não vai gravar campos no banco, mas sim objetos. Você precisa gravar uma pessoa, certo? Então o que a sua “tela” (ou camada view) deve se preocupar é em mandar um objeto pessoa para algum lugar para ser gravado. Como esses dados serão gravados ou até mesmo aonde, não é preocupação do seu JFrame, mas sim da classe que irá manipular esse objeto (PessoaDAO, por exemplo).

O exemplo que você tanto quer já está contigo, você já tem o que precisa para gravar no banco de dados (que é uma Connection e o driver JDBC do MySQL), basta você manipulá-los de uma forma adequada…

Tente fazer essa classe, como eu falei antes, que só se preocupa em gravar os dados de pessoa no MySQL. Depois você chama um objeto desta classe a partir do seu JFrame…

Entendi, Erico. Obrigadão mesmo!!! :smiley: