public void Gravar() {
Connection con = Conexao.getConnection();
String sql = "insert into aparelho(CodApar,Descricao,EspTec)values(Cod,Desc,EspTec);";
PreparedStatement ps;
try {
ps = con.prepareStatement(sql);
ResultSet rs = ps.executeQuery();
String Cod=txtCodAp.getText();
String Desc =txtNomeAp.getText();
String EspTec =txtModAp.getText();
JOptionPane.showMessageDialog(null, "CADASTRO EFETUADO COM SUCESSO!!",
"AVISO", JOptionPane.INFORMATION_MESSAGE);
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "gravação",
"AVISO", JOptionPane.ERROR_MESSAGE);
} catch (Exception e){
JOptionPane.showMessageDialog(null, "erro na gravação",
"AVISO", JOptionPane.ERROR_MESSAGE);}
}
O PreparedStatment está errado.
Não testei, mais co código abaixo deve funcionar:
public void Gravar() {
Connection con = Conexao.getConnection();
String sql = "insert into aparelho(CodApar,Descricao,EspTec)values(?,?,?);";
PreparedStatement ps;
try {
ps = con.prepareStatement(sql);
ps.setString(1, txtCodAp.getText());
ps.setString(2, txtNomeAp.getText());
ps.setString(3, txtModAp.getText());
ResultSet rs = ps.executeQuery();
JOptionPane.showMessageDialog(null, "CADASTRO EFETUADO COM SUCESSO!!",
"AVISO", JOptionPane.INFORMATION_MESSAGE);
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "gravação",
"AVISO", JOptionPane.ERROR_MESSAGE);
} catch (Exception e){
JOptionPane.showMessageDialog(null, "erro na gravação",
"AVISO", JOptionPane.ERROR_MESSAGE);}
}
Olá, MarcoRocha!
Tudo bem?
Bom, duas coisas a dizer:
- Leia o tutorial para postagem no fórum. Quando você for postar um código, coloque-o entre as tags code, pois ele ficará assim:
Esta é minha Tag Code!
- Vamos lá…
Você deve colocar os parâmetros em seu PreparedStatement antes de executá-lo!
Faça do seguinte modo:
public void Gravar(int CodApar, String Descricao, int EspTec) {
try {
Connection con = Conexao.getConnection();
String sql = "Insert Into Aparelho(CodApar,Descricao,EspTec) Values (?, ?, ?)"; // Perceba que, para trabalhar com parâmetros, faço uso da ?.
PreparedStatement ps = con.prepareStatement(sql);
ps.setInteger(1, CodApar);
ps.setString(2, Descricao);
ps.setInteger(3, EspTec);
ResultSet rs = ps.execute(); // Para comandos de inserção, usa-se o método execute().
JOptionPane.showMessageDialog(null, "CADASTRO EFETUADO COM SUCESSO!!",
"AVISO", JOptionPane.INFORMATION_MESSAGE);
} catch (SQLException e) {
JOptionPane.showMessageDialog(null, "gravação",
"AVISO", JOptionPane.ERROR_MESSAGE);
} catch (Exception e){
JOptionPane.showMessageDialog(null, "erro na gravação",
"AVISO", JOptionPane.ERROR_MESSAGE);}
}
Tente assim, e poste-nos um reply!
Espero ter ajudado!
[]s
ex:
public boolean inserir(Usuario usuario) {
int inseriu = 0;
usuario = formataObjeto(usuario);
try {
query = ("INSERT INTO "MCTTB001_USUARIO" ("LOGIN_MCTTB001", " +
""PERFIL_MCTTB001","NOME_MCTTB001", "UNIDADE_MCTTB001") VALUES('" +
usuario.getLogin() + "'," + usuario.getPerfil().getId() +
",'" + usuario.getNome() + "', '" + usuario.getUnidade() + "' )" );
inseriu = stmt.executeUpdate(query);
} catch (SQLException sqlex) {
this.codMensagem = Integer.parseInt(sqlex.getSQLState());
logger.error(sqlex);
}
return inseriu == 1;
}
Coloquei o codigo do carlosbarbero mas entra na exceptionSQL
não entendo pq aparece que a rs nunca foi lida
o código do Nicolas não da certo pq minha classe é extends de uma classe abstrata
Coloque o erro para que possamos verificar o que está acontecendo.
Provavelmente algum campo da tabela do BD deve estar com valores que não sejam varchar.
entao o codApar é int …num da erro mas cai no
catch
catch (SQLException e) {
JOptionPane.showMessageDialog(null, "gravação",
"AVISO", JOptionPane.ERROR_MESSAGE);
troque a linha do código por essa:
ps.setInt(1, txtCodAp.getText());
:PGalera deu certo apenas troquei no codigo o Result rs=ps.executequery()
por
pois só se usa result quando é busca
Valew pela ajuda galera