Problema conexão com banco de dados

Olá amigos, esse é o meu primeiro tópico, se algo estiver errado, por favor me desculpem.
Bom, minha dúvida é a seguinte:
Preciso fazer com que os dados digitados na minha tela sejam inserindos num bando de dados, minha tela é essa >

Abaixo segue o código que eu já fiz, no eclipse não há erro, porém, quando eu clico no botão Cadastrar nada acontece. Onde será que eu estou errando.
Muito obrigado desde já a todos.

[code]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("");
}

}
[/code]

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

[quote]# 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+");";[/quote]

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)
na Linha 3 não está faltando um “d” e outra, não seria stm, pois foi declarada assim? Não estou querendo corrigir, é que não tenho muita experiência em java e por isso, qualquer detelhe me confude. Espero que não me entenda mal.

E o que implementei no meu codigo esse >

[code] 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();[/code]

Acontece que todos os “stm.setParameter” estão dando erro, assim com os PreparedStatement. Por que será?

o jeito que vc implemnetou esta correto
ali no codigo acima so teve uns erros de digitação
esta correto o seu codigo
=D

[quote=marcosharbs]o jeito que vc implemnetou esta correto
ali no codigo acima so teve uns erros de digitação
esta correto o seu codigo
=D[/quote]Mais ai que tá amigo, ta dando os seguintes erros:

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.