Conexão com Banco de Dados ,Método Delete -Por favor me ajudem não encontro o erro

15 respostas
DavidUser

criei um método para deletar um cliente ou melhor uma linha criada no meu banco com o seguinte código:

private void btmDeleteActionPerformed(java.awt.event.ActionEvent evt) { ResultSet rs=null; String stm="Delete from Cliente where "+busca+"="+txtvalor.getText(); System.out.println(stm); Connection cnx; try{ Class.forName("com.mysql.jdbc.Driver").newInstance(); cnx=DriverManager.getConnection("jdbc:mysql://localhost/sistema","root",""); PreparedStatement statement=cnx.prepareStatement(stm); rs=statement.executeQuery(); } catch(Exception e){ System.out.println(e.toString()); } }
Saída-Agenda(run):
[size=9]java.sql.SQLException: Can not issue data manipulation statements with executeQuery().[/size]

Me ajude a encontrar o erro por favor!

15 Respostas

Pedrosa

Primeiro em um Delete não tem ResultSet e não deve usar um executeQuery e sim um executeUpdate :

Tente algo assim e use prepareStatement

Connection conn = ConnectionFactory.getConnection();
PreparedStatement pstmt = null;
SQL = " DELETE FROM tabela  WHERE campo=?";
pstmt = conn.prepareStatement(SQL);
pstmt.setInt(1, codigo);
pstmt.executeUpdate();
DavidUser

de onde é esse valor codigo?

gilmaslima

codigo pode ser uma variavel que armazena o id que é usado na clausula do seu where.

SQL = " DELETE FROM tabela  WHERE campo=?";   

pstmt.setInt(1, codigo);  // ? é substituido por o que vier nessa variavel codigo

flw!

Pedrosa

É o valor campo que deseja ser a condição para apagar o registro, no seu caso txtvalor.getText().

where campo = codigoCampo

Note que vc seta o tipo do campo PreparedStatement, por exemplo se sua coluana do banco de dados for varchar deve setar um String e assim por diante:
Ex

pstmt.setString(1, nome);
DavidUser

deu erro olha:
java.sql.SQLException: Parameter index out of range (1 > number of parameters, which is 0).

DavidUser

o valor q coloquei foi “1”

Guilherme_Gomes

Ele deu só um exemplo, o que importa é que você está usando executeQuery() onde deve ser usado executeUpdate(). Você está atualizando o estado do banco (update), e não fazendo uma busca (query).

DavidUser

AHHHHHHAAAAAAAAAAAAAAAAA!
era so trocar de Query para Update!
vlw ai ninguem tinha visto isso la na facu,
tem explicando isso no manual da sum?

DavidUser

já q vc ta aki vc pode me falar como eu executo outra classe com método principal por outra:
tenho uma classe busca na qual inclui um botão que devia chamar a classe cadastra.

Guilherme_Gomes

Manual da sum? Hehehehe.

Da uma olhada na API de PreparedStatment que la explica.

Quanto a sua outra duvida… quê?

DavidUser

tipo assim fiz um painel em swing que possui um botão qu serviria para executar uma outra classe que tem outro painel swing que cadastra dados.

Simplificando: como eu executo outra classe por um comando java?

Guilherme_Gomes

Aconselho você a olhar alguns tutoriais de Swing, existem alguns aqui no GUJ.

DavidUser

é bem simples dexa eu tentar!
para executar uma classe teriamos que no prompt DOS, exucutar um java

tem como executar esse comando em java?

DavidUser

ei ha que pacote o getResource() pertence?
não to sabendo oque importar

Pedrosa

Faça um jar, que é um executavel da sua aplicação.

Crie um arquivo .bat se tiver usando Ruindows com o comando.

java -jar aplicacao.jar

De 2 cliques no arquivo bat ,pronto sua aplicação ira abrir.

Criado 16 de abril de 2009
Ultima resposta 16 de abr. de 2009
Respostas 15
Participantes 4