import javax.swing.*;
import java.io.*;
import java.sql.*;
import java.awt.*;
import java.awt.event.*;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.*;
import javax.swing.JButton;
public class CadastroCliente extends JFrame{
public Connection con;
private JButton btCadastrar, btLimpar;
private JPanel pnlOeste, pnlLeste, pnlSul;
private String sql = null;
private JLabel lbTitulo;
private JLabel lbCodigo, lbNome, lbEndereco, lbBairro, lbCidade, lbCep, lbEstado,
lbDataNascimento, lbSexo, lbCpf, lbRg, lbTelefone, lbEmail;
private JTextField tfCodigo, tfNome, tfEndereco, tfBairro, tfCidade, tfCep, tfEstado,
tfDataNascimento, tfSexo, tfCpf, tfRg, tfTelefone, tfEmail;
public CadastroCliente() {
setTitle("CADASTRO DE CLIENTE");
//declaração do container
Container cp = getContentPane();
Icon imgMenu = new ImageIcon("imagens/imgCadastroCliente.jpg");
//instaciação dos botões
btCadastrar = new JButton("Cadastrar");
btLimpar = new JButton("Limpar Campos");
//instciação dos textfields
tfCodigo = new JTextField(15);
tfNome = new JTextField(15);
tfEndereco = new JTextField(15);
tfBairro = new JTextField(15);
tfCidade = new JTextField(15);
tfCep = new JTextField(15);
tfEstado = new JTextField(15);
tfDataNascimento = new JTextField(15);
tfSexo = new JTextField(15);
tfCpf = new JTextField(15);
tfRg = new JTextField(15);
tfTelefone = new JTextField(15);
tfEmail = new JTextField(15);
//instaciação dos labels
lbCodigo = new JLabel("Codigo:");
lbNome = new JLabel("Nome:");
lbEndereco = new JLabel("Endereço:");
lbBairro = new JLabel("Bairro:");
lbCidade = new JLabel("Cidade:");
lbCep = new JLabel("Cep:");
lbEstado = new JLabel("Estado:");
lbDataNascimento = new JLabel("Data de Nascimento:");
lbSexo = new JLabel("Sexo:");
lbCpf = new JLabel("CPF:");
lbRg = new JLabel("RG:");
lbTelefone = new JLabel("Telefone:");
lbEmail = new JLabel("e-mail:");
lbTitulo = new JLabel("", imgMenu, JLabel.CENTER);
pnlOeste = new JPanel(new GridLayout(7,2));
pnlOeste.add(lbCodigo);pnlOeste.add(tfCodigo);
pnlOeste.add(lbNome);pnlOeste.add(tfNome);
pnlOeste.add(lbEndereco);pnlOeste.add(tfEndereco);
pnlOeste.add(lbBairro);pnlOeste.add(tfBairro);
pnlOeste.add(lbCidade);pnlOeste.add(tfCidade);
pnlOeste.add(lbCep);pnlOeste.add(tfCep);
pnlOeste.add(lbEstado);pnlOeste.add(tfEstado);
pnlLeste = new JPanel(new GridLayout(6,2,4,4));
pnlLeste.add(lbDataNascimento);pnlLeste.add(tfDataNascimento);
pnlLeste.add(lbSexo);pnlLeste.add(tfSexo);
pnlLeste.add(lbCpf);pnlLeste.add(tfCpf);
pnlLeste.add(lbRg);pnlLeste.add(tfRg);
pnlLeste.add(lbTelefone);pnlLeste.add(tfTelefone);
pnlLeste.add(lbEmail);pnlLeste.add(tfEmail);
pnlSul = new JPanel(new GridLayout(1,2));
pnlSul.add(btCadastrar);
pnlSul.add(btLimpar);
//definição do layout
cp.setLayout(new BorderLayout());
//adição dos itens no container
cp.add("North", lbTitulo);
cp.add("East", pnlLeste);
cp.add("West", pnlOeste);
cp.add("South", pnlSul);
setLocation(150, 250);
pack();
//action listenter
btCadastrar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
btCadastrar_Click();
}
});
btLimpar.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e){
btLimpar_Click();
}
});
}
public static void main(String[] args) {
new CadastroCliente().setVisible(true);
try{
Class.forName("org.hsqldb.jdbcDriver");
Connection con = null;
con = DriverManager.getConnection("jdbc:hsqldb:hsql://localhost/nobeldb",
"sa","");
}catch(Exception e){System.out.print("Falha na conexão");}
}
public void btCadastrar_Click(){
if (tfCodigo.getText().trim().length()!=0 &&
tfNome.getText().trim().length()!=0 &&
tfEndereco.getText().trim().length()!=0 &&
tfBairro.getText().trim().length()!=0 &&
tfCidade.getText().trim().length()!=0 &&
tfCep.getText().trim().length()!=0 &&
tfEstado.getText().trim().length()!=0 &&
tfDataNascimento.getText().trim().length()!=0 &&
tfSexo.getText().trim().length()!=0 &&
tfCpf.getText().trim().length()!=0 &&
tfRg.getText().trim().length()!=0 &&
tfTelefone.getText().trim().length()!=0 &&
tfEmail.getText().trim().length()!=0){
String sCodigo = tfCodigo.getText();
String sNome = tfNome.getText();
String sEndereco = tfEndereco.getText();
String sBairro = tfBairro.getText();
String sCidade = tfCidade.getText();
String sCep = tfCep.getText();
String sEstado = tfEstado.getText();
String sDataNascimento = tfDataNascimento.getText();
String sSexo = tfSexo.getText();
String sCpf = tfCpf.getText();
String sRg = tfRg.getText();
String sTelefone = tfTelefone.getText();
String sEmail = tfEmail.getText();
sql = "INSERT INTO CLIENTE(CODIGO, NOME, ENDERECO, BAIRRO, CIDADE, CEP, ESTADO, DATANASCIMENTO, CPF, RG, TELEFONE, EMAIL) " +
"VALUES("+sCodigo+","+sNome+","+sEstado+","+sBairro+","+sCidade+","+sCep+","+sEndereco+","+sDataNascimento+","+sSexo+","+sCpf+","+sRg+","+sTelefone+","+sEmail+");";
try{
Statement stmt = con.createStatement();
ResultSet rs;
stmt.executeUpdate(sql);
System.out.println("[Dados Incluidos]");
btLimpar_Click();
}catch(SQLException sql){System.out.print("Erro na inclusão dos dados");};
}
}
public void btLimpar_Click(){
tfCodigo.setText("");
tfNome.setText("");
tfEndereco.setText("");
tfBairro.setText("");
tfCidade.setText("");
tfCep.setText("");
tfEstado.setText("");
tfDataNascimento.setText("");
tfSexo.setText("");
tfCpf.setText("");
tfRg.setText("");
tfTelefone.setText("");
tfEmail.setText("");
}
}
Problema conexão com banco de dados
14 Respostas
Olhando para o seu código vejo um erro no sua String sql.
primeiro: vc não precisa terminar a string com ; (ponto e virgula)
segundo: na cláusula “VALUES” as strings não estão entre aspas simples (’ ').
Se esse for unico problema talvez isso deva resolver
mas eu sugiro que vc use um PreparedStatemt setando parâmetros na query.
espero ter ajudado!
Quando eu as coloco entre aspas simples da erro.
“VALUES(”+‘sCodigo’+","+sNome+"…
“mas eu sugiro que vc use um PreparedStatemt setando parâmetros na query”
Voce poderia me explicar o seria isso. Muito Obrigado amigo.
Coloque assim
"VALUES("’"+sCodigo+"’,’"+sNome+"’" + …
Abraços
Wanderson 8)
um exemplo de preparedStatement:
public void inserirItemPedido(ItemPedido itempedido, Connection con) throws SQLException {
try{
//con = Conexao.obterConexao();
PreparedStatement pst = con.prepareStatement(
"insert into item_pedido values (s_itempedido.nextval,?,?,?,?)");
pst.setInt(1, itempedido.getQuantidade());
pst.setDouble(2, itempedido.getPrecoUnitario());
pst.setString(3, itempedido.getItem().getCodigo());
pst.setLong(4, generic.getNumeroPedido());
pst.execute();
}catch(SQLException e){
//con.rollback();
throw e;
}
}
cada ponto de interrogação ali é um parametro entendeu?
assim vc nao precisa ficar cuidando com as aspas e tal e é mais seguro tb
# sql = "INSERT INTO CLIENTE(CODIGO, NOME, ENDERECO, BAIRRO, CIDADE, CEP, ESTADO, DATANASCIMENTO, CPF, RG, TELEFONE, EMAIL) " +“VALUES(”+sCodigo+","+sNome+","+sEstado+","+sBairro+","+sCidade+","+sCep+","+sEndereco+","+sDataNascimento+","+sSexo+","+sCpf+","+sRg+","+sTelefone+","+sEmail+");";
as aspas simples devem fazer parte da string sql, tipo assim
sql = "INSERT INTO CLIENTE(CODIGO, NOME, ENDERECO, BAIRRO, CIDADE, CEP, ESTADO, DATANASCIMENTO, CPF, RG, TELEFONE, EMAIL) " + “VALUES( ’ “+sCodigo+” ', ’ “+sNome+” ’ , ’ “+sEstado+” ’ , ’ “+sBairro+” ’ , ’ “+sCidade+” ’ , ’ “+sCep+” ’ , ’ “+sEndereco+” ’ , ’ “+sDataNascimento+” ’ , ’ “+sSexo+” ’ , ’ “+sCpf+” ’ , ’ “+sRg+” ’ , ’ “+sTelefone+” ’ , ’ “+sEmail+” ’ )”;
Agora o PreparedStatement é bom para evitar esses tipos de erros, pois no lugar dessas variáveis vc coloca o simbolo de interrogação (?)
e usa o metodo setParamete(int n, Object o) para setar os valore, algo mais ou menos assim:
String sql = "INSERT INTO CLIENTE(CODIGO, NOME, ENDERECO, BAIRRO, CIDADE, CEP, ESTADO, DATANASCIMENTO, CPF, RG, TELEFONE, EMAIL) " +
"VALUES( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
PrepareStatement stm = new PreparedStatement(sql);
stmt.setPatameter(1,sCodigo);
stmt.setParameter(2,sNome);
stmt.setParameter(3,sEstado);
//....(assim por diante até completar todos os simbolos de interrogação)
o metodo setParamete recebe dois parâmetros
Um inteiro que indica qual indice vc quer setar o valor (indica numero do simbolo de interrogação)
Um Object que é o valor a ser atribuido para aquele indice;
no final vc da um executeUpdate() e pronto!
Dê uma pesquisada sobre PreparedStatement e vc encontrará muita coisa!
boa sorte ai!
usar PrepareStatement como rycmaster sugirei é bem mais aconselhável.
Abraços
Wanderson 8)
Amigo, primeiramente muito obrigado.
O código que vc me passou é esse >1. String sql = "INSERT INTO CLIENTE(CODIGO, NOME, ENDERECO, BAIRRO, CIDADE, CEP, ESTADO, DATANASCIMENTO, CPF, RG, TELEFONE, EMAIL) " +
2. "VALUES( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
3. PrepareStatement stm = new PreparedStatement(sql);
4. stmt.setPatameter(1,sCodigo);
5. stmt.setParameter(2,sNome);
6. stmt.setParameter(3,sEstado);
7. //....(assim por diante até completar todos os simbolos de interrogação)
String sql = "INSERT INTO CLIENTE(CODIGO, NOME, ENDERECO, BAIRRO, CIDADE, CEP, ESTADO, DATANASCIMENTO, CPF, RG, TELEFONE, EMAIL) " +
"VALUES( ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
PreparedStatement stm = new PreparedStatement(sql);
stm.setPatameter(1,sCodigo);
stm.setParameter(2,sNome);
stm.setParameter(3,sEndereco);
stm.setParameter(4,sBairro);
stm.setParameter(5,sCidade);
stm.setParameter(6,sCep);
stm.setParameter(7,sEstado);
stm.setParameter(8,sDataNascimento);
stm.setParameter(9,sCpf);
stm.setParameter(10,sRg);
stm.setParameter(11,sTelefone);
stm.setParameter(12,sEmail);
stm.executeUpdate();
o jeito que vc implemnetou esta correto
ali no codigo acima so teve uns erros de digitação
esta correto o seu codigo
=D
o jeito que vc implemnetou esta corretoMais ai que tá amigo, ta dando os seguintes erros:
ali no codigo acima so teve uns erros de digitação
esta correto o seu codigo
=D
setParameter = The method setParameter(int, String) is undefined for the type PreparedStatement
PreparedStatementr = Cannot instantiate the type PreparedStatement;
Por que será, alguém sabe.
Obrigado a todos que ajudaram.
hahaha é verdade meu dedo gordo atrapalhou na digitação! XD
desculpe pelos erros! realmente está errado onde vc apontou, e as correções estão certas!
corrigindo esses erros o problema deve sumir!
XD
Acho q eu cometi outro erro!
sempre me confundo pq a API q eu utiliza usa metodos diferentes. No seu caso vc deve estar usando a API java.sql
ao invès de usar o metodo setParametet use setString(int n, String s) quando for string , setInt(…) qunado for int e tem outros metodos Set para cada tipo… tenta ai e ve se funciona!
Os erros referentes a setParameted acabaramc com a substituição que você sugeriu, no entando o erro persiste em
PreparedStatement stm = new [i]PreparedStatement/i;
Obrigado por tudo.
a tah! mais um pequeno detalhe.
vc usa o Connection pra preparar o statement
assim:
PreparedStatement stmt = con.prepareStatement(sql);
Amigos graças a vocês está tudo funcionando normalmente.
Muito Obrigado a todos.