Solucionado (ver solução)
Solucionado
(ver solução)
4
respostas

3. SQL Injection e Prepared Statement

Bom dia Pessoal,

Fiz a classe de insert, porém NÂO INSERE nada no banco de dados e não tem mensagens de erros, apenas não atualiza.

obs: Estou usando banco de dados ORACLE, e no campo "id", inseri uma sequence chamada "seq_produto_id".

Segue abaixo o codigo da Classe de INSERT:

public class TesteInsert {

public static void main(String[] args){

String id = "seq_produto_id.nextval"; String nome = "disco"; String descricao = "voador";

try{ Class.forName("oracle.jdbc.driver.OracleDriver"); Connection conexao = DataBase.getConnection();

String sql = "insert into produto (id,nome,descricao) values (?,?,?)"; PreparedStatement statement = conexao.prepareStatement(sql);

statement.setString(1, id); statement.setString(2, nome); statement.setString(3, descricao);

int count = statement.getUpdateCount(); System.out.println(count + " linhas atualizadas");

statement.close(); conexao.close();

}catch (ClassNotFoundException e) { System.out.println("ClassNotFoundException " + e.getMessage()); } catch (SQLException e) { System.out.println("SQLException " + e.getMessage()); } catch (Exception e) { System.out.println("Exception = " + e.getMessage()); } }

}

Obg pela ajuda!

4 respostas

Bom dia Pessoal,

Fiz a classe de insert, porém NÂO INSERE nada no banco de dados e não tem mensagens de erros, apenas não atualiza.

obs: Estou usando banco de dados ORACLE, e no campo "id", inseri uma sequence chamada "seq_produto_id".

Segue abaixo o codigo da Classe de INSERT:

''' package br.com.alura.jdbc;

import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException;

public class TesteInsert {

public static void main(String[] args){

String id = "seq_produto_id.nextval"; String nome = "disco"; String descricao = "voador";

try{ Class.forName("oracle.jdbc.driver.OracleDriver"); Connection conexao = DataBase.getConnection();

String sql = "insert into produto (id,nome,descricao) values (?,?,?)"; PreparedStatement statement = conexao.prepareStatement(sql);

statement.setString(1, id); statement.setString(2, nome); statement.setString(3, descricao);

int count = statement.getUpdateCount(); System.out.println(count + " linhas atualizadas");

statement.close(); conexao.close();

}catch (ClassNotFoundException e) { System.out.println("ClassNotFoundException " + e.getMessage()); } catch (SQLException e) { System.out.println("SQLException " + e.getMessage()); } catch (Exception e) { System.out.println("Exception = " + e.getMessage()); } }

} '''

Obg pela ajuda!

Não estou conseguindo colocar o código na formatação correta. Alguém pode me ajudar?

solução!

Descobri o erro, faltou o "statement.executeQuery();", apaguei a variavel "String id" (pois não estava funcionando do jeito que eu tinha colocado) e adaptei o codigo. Funcionou!

Só fica a questão da formatação do código aqui no site do ALURA, Como coloco o código sem deixar fora do padrão. Coloquei ''' no inicio e fim do codigo, mas não deu certo

Qualquer duvida só informar..

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software