Ir ao conteúdo
  • Cadastre-se

Dúvida sobre Java e conexão com o MySQL


Cassia Reis

Posts recomendados

Olá, amigos, Boa Tarde.

Sou iniciante e estou criando um programa para cadastrar um cliente com nome e email no NetBeans.

Só que está dando alguns erros, a saída gráfica é exibida, mas não é incluído no banco de dados, e eu também não tenho certeza se está tendo a conexão com o banco de dados, até ontem estava dando certo, mas mexi em algumas coisas mas agora não funciona mais.

Esses são os códigos que eu fiz:


package ClassesDeControle;


import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;


public class Insere {
public MyConnection con;

public Insere(String Cliente, String nome, String email) throws SQLException{
String sql="INSERT INTO "+Cliente+" (nome, email) VALUES ('"+nome+"','"+email+"')";
con.stm.executeUpdate(sql);

}
}


package ClassesDeControle;


import javax.swing.*;
import java.awt.*;
import java.awt.event.*;
import java.sql.SQLException;


public class AppCliente {

public JFrame janela;
public JButton btoIncluir, btoExcluir, btoAlterar, btoConsultar, btoSair;
public JLabel lblNome, lblEmail;
public JTextField tfNome, tfEmail;
public JPanel pnDados, pnBotoes;
public static String nome;
public static String email;

AppCliente() {
janela = new JFrame("Cliente");

pnDados = new JPanel();
pnBotoes = new JPanel();

btoIncluir = new JButton("Incluir");
btoExcluir = new JButton("Excluir");
btoAlterar = new JButton("Alterar");
btoConsultar = new JButton("Consultar");
btoSair = new JButton("Sair");

lblNome = new JLabel("Nome");
lblEmail = new JLabel("Email");

tfNome = new JTextField(30);
tfEmail = new JTextField(20);

TrataEventos te = new TrataEventos();

btoIncluir.addActionListener(te);
btoExcluir.addActionListener(te);
btoAlterar.addActionListener(te);
btoConsultar.addActionListener(te);
btoSair.addActionListener(te);

pnDados.setLayout(null);
pnBotoes.setLayout(new FlowLayout());
janela.setLayout(new GridLayout(2, 1));
janela.setResizable(false);

lblNome.setBounds(10, 10, 50, 25);
tfNome.setBounds(55, 10, 280, 25);
lblEmail.setBounds(10, 45, 90, 25);
tfEmail.setBounds(70, 45, 180, 25);

pnDados.add(lblNome);
pnDados.add(tfNome);
pnDados.add(lblEmail);
pnDados.add(tfEmail);
pnBotoes.add(btoIncluir);
pnBotoes.add(btoExcluir);
pnBotoes.add(btoAlterar);
pnBotoes.add(btoConsultar);
pnBotoes.add(btoSair);

janela.add(pnDados);
janela.add(pnBotoes);

janela.setSize(450, 200);

janela.setLocationRelativeTo(null);

janela.setVisible(true);
}

public void setVisible(boolean {
}


public class TrataEventos implements ActionListener {

public void actionPerformed(ActionEvent e) {
if (e.getSource() == btoIncluir) {
try {
Insere insere = new Insere("Cliente", tfNome.getText(), tfEmail.getText());
} catch (SQLException el) {
el.printStackTrace();

}
}
}
}
}


package ClassesDeControle;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;


public class MyConnection {
private Connection connection;
final Statement stm=null;


public MyConnection() throws ClassNotFoundException, SQLException{
try
{
new MyConnection();
Class.forName("com.mysql.jdbc.Driver");
connection=DriverManager.getConnection("jdbc:mysql://localhost/trabalho","root","cassia");
System.out.println("Conectado com sucesso");
}
catch(Exception e)
{
System.out.println("Não conectado");
}
}

}



package ClassesDeControle;

public class Principal {


public static void main(String[] args) {
AppCliente appcliente=new AppCliente();
appcliente.setVisible(true);
}
}

Esses são os códigos. O primeiro pede para criar uma nova Classe MyConnection dentro de Insere, mas em MyConnection já existe essa classe.

E não está executando ainda porque está pedindo um programa principal, mas eu criei o programa principal. Alguém poderia me ajudar?

Obrigada.

Link para o comentário
Compartilhar em outros sites

Olá Cassia Reis.

O primeiro erro que vejo está na primeira classe que fizeste.

Estás usando a classe MyConnection sem instância-la. Isto é obrigatório para qualquer método não estático (normalmente chamados assim: NomeDaClasse.metodoEstatico() )

Você precisa de um

con = new MyConnection();

Isto diz ao seu programa, que um objeto do tipo MyConnection vai existir no mundo.

Depois deste erro parei de ler. Seria uma boa se desses uma estudada melhor sobre orientação a objetos. Sua classe Insere na verdade é um método (não devia ser uma classe).

Algumas obs:

Normalmente é de muita ajuda a 'stack trace' que o java retorna quando você executa. Tens como incluir na sua pergunta?

Se deixei algo muito complicado só dizer que tento melhorar

Link para o comentário
Compartilhar em outros sites

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!