Bom dia, vou tentar te explicar como as coisas funcionam:
1-aqui crio a conexão com o MySQL, no caso a palavra localhost que esta no meio do código diz respeito ao numero do servidor de banco de dados mas se o banco for na sua propria maquina voce deixa localhost.
Obs: no banco você cria apenas uma tabela Exemplo cliente e em cada “linha” você coloca um “campo” como nome, endereço etc.
package cadastro;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import javax.swing.JOptionPane;
/**
*
* @author caio.takei
*/
public class Conexao {
//Método responsavel por abrir/estabelecer a conexão.
public Connection abrirConexao() {
Connection con = null;
try {
Class.forName("com.mysql.jdbc.Driver");//aqui especificamos o DRIVER referente ao banco que estamos usando no nosso caso o MySQL.
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/NomeDoBanco","usuario","senha");
//na linha acima definimos o "endereço/caminho" para o banco que usaremos neste programinha.
System.out.println("Conexão criada com sucesso!");
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Erro ao Conectar com Banco de Dados \n" + ex, "Erro de Conexão", JOptionPane.ERROR_MESSAGE);
} catch (ClassNotFoundException ex) {
JOptionPane.showMessageDialog(null, "Erro ao carregar o driver do Banco de Dados \n" + ex, "Erro: Driver do Banco de Dados", JOptionPane.ERROR_MESSAGE);
}
return con;
}
//Método responsável por fechar a conexão;
public void fecharConexao(Connection con) {
try {
if (con != null && !con.isClosed()) {
con.close();
// JOptionPane.showMessageDialog(null, "Conexão fechada com sucesso!!!");
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Erro ao Fechar a conexão \n" + ex + JOptionPane.ERROR_MESSAGE);
}
}
}
2-depois disso crio uma classe onde terei a entidade referente ao que quero mandar para o banco de dados:
public class Cliente {
private String nome;
private String endereco;
private String estado;
private String biografia;
public String getBiografia() {
return biografia;
}
public void setBiografia(String biografia) {
this.biografia = biografia;
}
public String getEndereco() {
return endereco;
}
public void setEndereco(String endereco) {
this.endereco = endereco;
}
public String getEstado() {
return estado;
}
public void setEstado(String estado) {
this.estado = estado;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
}
Obs: quando voce esta no netbeans e da dois cliques no botão salvar do seu formuário ele abre o local para você inserir o código referente a ação deste botão:
private void btSalvarActionPerformed(java.awt.event.ActionEvent evt) {
//aqui entre estas chaves voce devera escrever um codigo que seja capas de capturar o que sera digitado pelo usuario nos campos de nome, endereço etc...Armazenar estas informações em algum lugar e depois enviar ao banco ok!
Foi exatamente para isso que criamos esta classe acima (Cliente) pois não temos como jogar diretamente o que foi digitado no formulário para o banco de dados, por isso usamos esta classe para primeiramente pegar o que foi digitado na no formulário e guardar da seguinte forma:
Cliente cliente=new Cliente(); // voce deve criar uma (instancia) "objeto" cliente dentro do codigo do botao eu criei com o nome de "cliente" mas poderia ser qualquer nome como por exemplo cli cl etc..., (imagine que a classe é a forma a (isntancia) "objeto" ´´e um dos varios bolos que voce pode fazer atraves dela).
//depois voce tem (colocar(setar/set)) atraves dos metodos que estao na classe, cada (atributo/variavel) do objeto cliente "visto que são os mesmos da classe cliente: nome, endereço etc..." com o que foi digitado no formulario da seguinte forma: quando voce coloca o nome que voce deu ao novo objeto e digita "ponto" ele ja lista os metodos que ele tem que são os mesmos da classe atraves do qual foi criado, ai voce chama o metodo setNome que (coloca algo na variavel nome) e voce define esse algo na frente do sinal de igual que será o valor digitado no campo de texto(jTextField1 nome padrao que voce pode/deve nao obrigatoriamente mudar, ficando assim apos o sinal de igual jTextFild1.getText(); ou seja get do ingles que quer dizer pegar/ pegue o texto do campo de texto jTextField1 e coloque na variavel que esta antes do sinal de igual.
cliente.setNome=jTextField1.getText();
cliente.setEnderecoe=jTextField2.getText();
cliente.setSexo=jTextField3.getText();
}
3-agora crio uma classe chamada ClienteDAO dao quer dizer data access object ou objeto de acesso aos dados,
nesta classe crio o método que sera responsavel pela gravação das informações que forma armazenadas no objeto cliente que usamos acima, para o banco de dados:
import java.sql.Connection;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import javax.swing.JOptionPane;
public class UsuarioDAO {
//MÉTODO RESPONSÁVEL POR SALVAR UM NOVO REGISTRO NO BANCO DE DADOS.
public boolean salvarCliente(Cliente cliente) {
boolean salvou = true;
Connection con = null;
Conexao c = new Conexao(); aqui eu crio um objeto atraves da primeira classe que fiz nesta explicação e abaixo chamo o metodo abrir conexao, evitando que eu tenha que digitar todo aquele codigo de novo.
try {
con = c.abrirConexao();
if (con != null) {
//aqui eu mando jogar na tabela do banco(Cliente) nos campos(nome,endereco,estado e biografia) o que esta salvo dentro das variaveis daquele objeto cliente que criamos la em cima.
Statement stm = con.createStatement();
stm.executeUpdate("insert into Cliente(nome,endereco, estado e biografia) values ('" + cliente.getNome() + "' , '" + cliente.getEndereco() + "' ,'" + cliente.getEstado() + "', '" + cliente.getBiografia() + "')");
salvou = false;
JOptionPane.showMessageDialog(null, "Opeação realizada com sucesso!");
} else {
System.out.println("Conexão nula.");
}
} catch (SQLException ex) {
JOptionPane.showMessageDialog(null, "Erro ao tentar salvar registro no banco de dados." + ex + JOptionPane.ERROR_MESSAGE);
} finally {
c.fecharConexao(con);
}
return salvou;
}
4-agora preciso te explicar a parte mais chata de entender, é o seguinte sabe la em cima no topico dois onde te mostrei o que deve ser digitado dentro do codigo do botao. ate que criamos o objeto e guardamos nele o que havia sido digitado na tela?
Então precisamos completar o codigo daquele botao nao coloquei tudo, la em cima, para nao atrapalhar no entendimento, bom vou colocar abaixo não só o que esta faltando mas sim o codigo completo do botao(incluindo o que eu ja tinha colocado la em cima) ok?!?
private void btSalvarActionPerformed(java.awt.event.ActionEvent evt) {
//aqui entre estas chaves voce devera escrever um codigo que seja capas de capturar o que sera digitado pelo usuario nos campos de nome, endereço etc...Armazenar estas informações em algum lugar e depois enviar ao banco ok!
Foi exatamente para isso que criamos esta classe acima (Cliente) pois não temos como jogar diretamente o que foi digitado no formulário para o banco de dados, por isso usamos esta classe para primeiramente pegar o que foi digitado na no formulário e guardar da seguinte forma:
Cliente cliente=new Cliente(); // voce deve criar uma (instancia) "objeto" cliente dentro do codigo do botao eu criei com o nome de "cliente" mas poderia ser qualquer nome como por exemplo cli cl etc..., (imagine que a classe é a forma a (isntancia) "objeto" ´´e um dos varios bolos que voce pode fazer atraves dela).
//depois voce tem (colocar(setar/set)) atraves dos metodos que estao na classe, cada (atributo/variavel) do objeto cliente "visto que são os mesmos da classe cliente: nome, endereço etc..." com o que foi digitado no formulario da seguinte forma: quando voce coloca o nome que voce deu ao novo objeto e digita "ponto" ele ja lista os metodos que ele tem que são os mesmos da classe atraves do qual foi criado, ai voce chama o metodo setNome que (coloca algo na variavel nome) e voce define esse algo na frente do sinal de igual que será o valor digitado no campo de texto(jTextField1 nome padrao que voce pode/deve nao obrigatoriamente mudar, ficando assim apos o sinal de igual jTextFild1.getText(); ou seja get do ingles que quer dizer pegar/ pegue o texto do campo de texto jTextField1 e coloque na variavel que esta aintes do sinal de igual.
cliente.setNome=jTextField1.getText();
cliente.setEnderecoe=jTextField2.getText();
cliente.setSexo=jTextField3.getText();
//DAQUI EM DIANTE COLOCAREI E EXPLICAREI O QUE ESTAVA FALTANDO bom apos termos guardado tudo dentro do objeto cliente devemos de alguma forma chamar aquele metodo(public boolean salvarCliente(Cliente cliente)) que sera responsavel por efetivamente salvar as informações no banco ,que esta dentro da classe ClienteDAO(obs: veja bem esta classe "nao" tem nada a ver com a classe cliente, é outra classe independente), para chamarmos esse metodo faremos da seguinte forma:
//tambem teremos que criar uma instancia "objeto" do tipo ClienteDAO aqui dentro e faremos assim:
ClienteDAO clientedao = new ClienteDAO();
//criei acima com o nome de clientedao, poderia ser qualquer outro nome.
clientedao.salvarCliente(cliente)
//acima digitei o nome do objeto que eu havia criado e depois digitei "ponto" e ja me lista o metodo de salvarCliente, (obs:e nao se preucupe neste ponto é uma ves só que se de digitar cliente entre paranteses) e este por sinal este cliente que esta entre parenteses é o mesmo que criamos la em cima no qual guardamos/guardaremos o que sera digitado no formulario em suas variaveis, o que estou fazendo aqui é passando ele "entre parenteses" atraves do metodo salvarCliente por meio do objeto clientedao que criei agora ai ele manda tudo isso la naquele metodo igual ta classe ClienteDAO e esse metodo como expliquei la em cima joga na tabela que eu defini nele nos campos que eu tambem defini nele, o que o cliente esta guardando.
}
Obs: tudo que esta em verde não é código é só comentario explicando o que esta acontecendo, portanto não é necessário incli-los no seu código, embora seja bom para quem esta comessando.
Bom cara espero ter ajudado de alguma forma, qualquer coisa manda suas duvidas, porque sei que é difícil assimilar/entender tudo isso de uma vez.