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.