[RESOLVIDO]Problemas com a conexão

Olá galera, estou com um problema, criei uma tela e nela vou inserir os dados do cliente, criei a conexão de dados e funciona aparentemente bem, mas quando vou adicionar os dados me traz uma excessão.
Tenho alguns palpites mas queria ajuda de experientes.
1 - tenho alguns campos com mascaras, isso interfere no armazenamento?
2 - tenho um combobox, olhando o fórum aqui eu vi umas maneiras de pegar o valor do combo e mandar para o banco

minhas classes
1° Classe que armazena os valores no banco


package jSystem;

import java.sql.*;

import javax.swing.JOptionPane;


public class BancoDeDados {
	
	
	private static Connection conexao;
	static java.sql.PreparedStatement stm;
	static ResultSet rs;
	
	public BancoDeDados() throws SQLException{
    this.conexao = CriaConexão.getConexao();
	}
	
	public static Hospede adiciona(Hospede cliente)throws SQLException{
		try{
		String sql = "INSERT INTO hospede (Nome, CPF, Idade, Telefone, Endereco, Numero, Complemento, Cidade, Estado, Quarto)"
						+ "VALUES (?,?,?,?,?,?,?,?,?,?)";
		stm = conexao.prepareStatement(sql);
		
		stm.setString(2, cliente.getNome());
		stm.setString(3, cliente.getCpf());
		stm.setInt(4,cliente.getIdade());
		stm.setString(5, cliente.getTelefone());
		stm.setString(6, cliente.getEnde());
		stm.setInt(7, cliente.getNumero());
		stm.setString(8, cliente.getCompl());
		stm.setString(9, cliente.getCidade());
		stm.setString(10, cliente.getEstado());
		stm.setInt(11, cliente.getQuarto());
		
		stm.execute();
		stm.close();
		JOptionPane.showMessageDialog(null, "Adicionado com sucesso");
		return cliente;
		}
		catch(Exception ex){
			JOptionPane.showMessageDialog(null, "Problemas para incluir dados");
			
		}
		return null;
		
		
		
		
	}
	
	
	

}

2° Botão que adciona os dados

			try {				
				cliente.setNome(tnome.getText());
				cliente.setCpf(tcpf.getText());
				cliente.setIdade(Integer.parseInt(tidade.getText()));
				cliente.setTelefone(ttelefone.getText());
				cliente.setEnde(tendereço.getText());
				cliente.setNumero(Integer.parseInt(tnumero.getText()));
				cliente.setCompl(tcomplemento.getText());
				cliente.setCidade(tcidade.getText());
				cliente.setEstado(boxestado.getSelectedItem().toString());
				cliente.setQuarto(Integer.parseInt(tquarto.getText()));
				
				BancoDeDados.adiciona(cliente);
				System.out.println("Acessando");
				
			} catch (SQLException e1) {
				
				e1.printStackTrace();
			}
		}

Se puderem me ajudar agradeço

Ele me da a exceção da Classe BancoDeDados e traz o JOption “Problemas para incluir dados”

Valeuu

Manolo, manda a stacktrace pra gente.

Troca seu try/catch para catch (Exception ex) { JOptionPane.showMessageDialog(null, "Problemas para incluir dados " + ex.getMessage()); ex.printStackTrace(); } E veja qual a mensagem de erro aparece no console/JOptionPane

Blocos try e catch são justamente para controle de exceção.

Como no catch vc criou um JoptionPane para exibir “Problemas para incluir dados”, logo você não consegue visualizar de fato qual erro está acontecendo.

Acrescente isto:

[code]catch(Exception ex){
ex.printStackTrace(); //ou algo similar rs
JOptionPane.showMessageDialog(null, “Problemas para incluir dados”);

    }  [/code]

Ai você conseguirá identificar o real problema.

aew galera, ele me o seguinte erro

Parameter index out of range(11)number of parameters, whichs 10

Simples manolo, vc está passando o 11º parametro para o seu SQL sendo que ele espera 10.

stm.setString(2, cliente.getNome());
stm.setString(3, cliente.getCpf());
stm.setInt(4,cliente.getIdade());
stm.setString(5, cliente.getTelefone());
stm.setString(6, cliente.getEnde());
stm.setInt(7, cliente.getNumero());
stm.setString(8, cliente.getCompl());
stm.setString(9, cliente.getCidade());
stm.setString(10, cliente.getEstado());
stm.setInt(11, cliente.getQuarto());

NUNCA fiz assim, mas pelo que percebo o primeiro parametro de cada metodo ai não seria por acaso a posição de cada atributo na string SQL? Se for vc deveria começar por zero ou quem sabe 1.

E ai manolos, resolvi um problema e apareceu outro

Usei o printStackTrace e ele me traz o erro “null”

Não faço idéia do que é!

Aqui aonde o erro aparece

public static void adiciona(Hospede cliente)throws SQLException{
		try{
	    
		String sql = "INSERT INTO hospede (Nome, CPF, Idade, Telefone, Endereco, Numero, Complemento, Cidade, Estado, Quarto)"
						+ "VALUES (?,?,?,?,?,?,?,?,?,?)"; 
		stm = conexao.prepareStatement(sql);
		
		stm.setString(1, cliente.getNome());
		stm.setString(2, cliente.getCpf());
		stm.setInt(3,cliente.getIdade());
		stm.setString(4, cliente.getTelefone());
		stm.setString(5, cliente.getEnde());
		stm.setInt(6, cliente.getNumero());
		stm.setString(7, cliente.getCompl());
		stm.setString(8, cliente.getCidade());
		stm.setString(9, cliente.getEstado());
		stm.setInt(10, cliente.getQuarto());
		
		stm.execute();
		stm.close();
		JOptionPane.showMessageDialog(null, "Adicionado com sucesso");
		
		}
		catch(Exception e1){
			e1.printStackTrace();
			JOptionPane.showMessageDialog(null, "Erro na Inclusão: "+ e1.getMessage(),"Erro para incluir dado",JOptionPane.ERROR_MESSAGE);
			 
		}
	}

Ele aparece “Erro na inclusão: null”

cara dá um print no stm:

System.out.println(stm.toString());
Deixa esse comando na linha 18
E vê se está certo o seu comando SQL!

Pow cara não consegui visualizar não
mas no console me dá esse erro

java.lang.NullPointerException
at jSystem.BancoDeDados.adiciona(BancoDeDados.java:24)
at jSystem.TelaCadastro.actionPerformed(TelaCadastro.java:189)

E oq vc tem nessa linha? at jSystem.BancoDeDados.adiciona(BancoDeDados.java:24)

Linha 24:

linha 189:

Será que tô fazendo alguma coisa errada ai?

hummm

Mateus eu coloco mas não consigo ver o System
ele continua dando o java.lang.nullPointerException

Cara seguinte, eu acho que vc não ta conseguindo pegar a conexao.

1 - tenta dar um print na primeira linha:
Depois do: public static void adiciona(Hospede cliente)throws SQLException{

Antes do:
Try{

2- manda sua classe: CriaConexão

ele imprimiu null
então nem chegou a conectar né…

ai vai a classe que conecta

[code]package jSystem;

import java.sql.*;

import javax.swing.JOptionPane;

public class CriaConexão {

public static Connection getConexao() throws SQLException{
	try{
		Class.forName("com.mysql.jdbc.Driver");
		JOptionPane.showMessageDialog(null,"Conexão estabelecida");
		return DriverManager.getConnection("jdbc:mysql://localhost/hotel","root","admin");
		
	}catch(ClassNotFoundException ex){
		throw new SQLException(ex.getMessage());
	}
	
}

}
[/code]

Cara tira o ‘~’ de CriaConexao!

Nessa classe de conexao testa esse seu metodo.

Assim:

public static void main(String[] args) throws SQLException { System.out.println("###CONEXAO : " + CriaConexao.getConexao()); }

Vê o que acontece.

Olha oque deu

###CONEXAO : com.mysql.jdbc.JDBC4Connection@fb4226

Cara seguinte, eu consigo resolver!
Mas não consigo te explicar porque isso acontece!

(Peço a ajuda dos companheiros para isso!)

Por algum motivo o conection não pode ser static !

Tem varias maneiras p/ resolver isso.
1 - Para resolver seu problema, retire os static, tanto do metodo quando dos objetos! [Resolve]