Não consigo fazer um insert no BD

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:

  1. 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!
  1. 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 :cry:

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