Um insert simples usando PreparedStatement. Erro no banco { Resolvido }

Bom dia pessoal.

É o seguinte. Fiz um modelo bem simples de DAO e tal. Mas na hora de fazer o:
pstmt.execute(sql);

Ele da um erro:

Já fiz um teste com um select * from MINHA_TABELA… Daí funcionou. Mas com esse insert…

segue meu codigo:

public void gravar(Professor professor) throws SQLException{
		conn = ConexaoFactory.createConnection();
		PreparedStatement pstmt = null;
		String sql = null;
		try{
			sql = "insert into professor(nome,componente) VALUES (? , ?)";
			
			pstmt = conn.prepareStatement(sql);
			
			pstmt.setString(1, professor.getNome());
			pstmt.setString(2, professor.getComponente());
			
			pstmt.execute(sql);
			
		}catch(SQLException e){
			e.printStackTrace();
		}finally{
			conn.close();
			pstmt.close();
		}
	}

Obrigado desde já!!!

Que estranho. Sua tabela tem mesmo essas duas colunas? E elas são mesmo do tipo String? E o campo ID é mesmo auto-numerado?

Pois é Vini…

A tabela tem essas colunas sim. Fiz a query no meu client do mysql(TOAD), e funcionou normalmente. No banco eu coloquei como Varchar de 100 cada. E o id está auto-incrementavel sim.

olha a query no meu client:

insert into professor ( nome ,componente ) VALUES ( 'Lazaro' -- nome ,'WORD' -- componente )

Eu atualizei meu drive JDBC…

pstmt = conn.prepareStatement(sql); // você atribuiu o comando sql aqui pstmt.setString(1, professor.getNome()); pstmt.setString(2, professor.getComponente()); pstmt.execute(sql); // e aqui de novo
tente apenas…

veja mais:

http://download-llnw.oracle.com/javase/tutorial/jdbc/basics/prepared.html

O problema está no sislogismo associativo que prepara o bytecode em tempo de execução. Faz a forma do sistema se inspirar no avanço assíncrono. entendeu?

então wbdsjunior …

Tirei a linha
pstmt = conn.prepareStatement(sql);

e ele da um classico NULL POINT EXCEPTION…

e paulocandango…

Não são as aspas… pois estou usando o preparedStatement…

Manda um ‘DESC TABELA’ e cola aqui.

Olha só, leorbarbosa

Mandei um print do desc aí…

[quote=lazaropj]então wbdsjunior …

Tirei a linha
pstmt = conn.prepareStatement(sql);

e ele da um classico NULL POINT EXCEPTION…

e paulocandango…

Não são as aspas… pois estou usando o preparedStatement…[/quote]
você não pode retirar esta linha. é a partir dela que você define quais serão e onde estrão os parâmetros.

tente assim:

pstmt = conn.prepareStatement(sql); pstmt.setString(1, professor.getNome()); pstmt.setString(2, professor.getComponente()); pstmt.executeUpdate();
e diga se funcionou.

ah! a NullPointerException ocorreu porque ao retirar a linha acima, o objeto pstmt não foi instanciado.

A princípio, não se trata de banco.

Você já verificou o que está chegando no objeto ‘professor’ ?

Se os métodos de leitura estiverem trazendo lixo, ele vai chiar mesmo.

Funfou galera…

kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk…

COisa mais idiota… e eu sabia q era idiota…kkkkkkkkkkkk

só tirei o a variavel sql do execute

pstmt.execute();

Valew galera…

=)

Coloca um [RESOLVIDO] no post então.