1. java
  2. android
  3. c#
  4. .net
  5. javascript
  6. php
  7. jquery
  8. html
  9. sql

Problema para checar se um determinado resultado existe em uma tabela nvalid column index

Bom dia, pessoal.

Tenho uma classe Dao com os seguintes métodos:


/*Essa é a tabela:
create table clientes(
id_pessoa numeric(9) primary key,
nome varchar(255) not null,
sobrenome varchar(255) not null,
endereco varchar(255) not null
);*/

public void insert(Pessoa entity) {
        try {

        stmt = con.prepareStatement("INSERT INTO CLIENTES(id_pessoa,nome,sobrenome,endereco) VALUES (? , ? , ? , ?)");
            long id = IdGenerator.getIdGen();
            while (searchID(id)) {
                id = IdGenerator.getIdGen();
            }
            stmt.setLong(1, id);
            stmt.setString(2, entity.getNome());
            stmt.setString(3, entity.getSobrenome());
            stmt.setString(4, entity.getEndereco());
            stmt.execute();
            con.commit();
        } catch (SQLException e) {
            System.out.println("Error: "+e);
        } finally {
            try {
                stmt.close();
                con.close();
            } catch (SQLException e) {
                throw new RuntimeException(e);
            }
        }
    }

public boolean searchID(long id) {
    Pessoa p = new Pessoa();
    try {
        stmt = con.prepareStatement("SELECT id_pessoa FROM CLIENTES WHERE id_pessoa = ? ");
        stmt.setLong(1, id);
        rs = stmt.executeQuery();
        boolean row = false;
        while(rs.next()){
            row = true;
        }
        return row;

    } catch (SQLException e) {
        throw new RuntimeException(e);
    }

}

public static void main(String[] args) {
    PessoaDao pd = new PessoaDao();
    Pessoa p = new Pessoa();
    p.setNome("sergio");
    p.setSobrenome("luigi");
    p.setEndereco("rua Ipuá");
    pd.insert(p);

}
Caso vocês tenham curiosidade, o método estático getIdGen foi implementado assim:
public static Long getIdGen() {
        Random random = new Random();
        StringBuilder sb = new StringBuilder();

        while (sb.length() != 9) {
            sb.append(random.nextInt(10));
            if (sb.charAt(0) == '0')
                sb.deleteCharAt(0);
        }
        return Long.parseLong(sb.toString());
    }

Estou recebendo um SQLException (invalid column index). O que vocês acham que poderia ser?

  1. Você vai ver essas setas em qualquer página de pergunta. Com elas, você pode dizer se uma pergunta ou uma resposta foram relevantes ou não.
  2. Edite sua pergunta ou resposta caso queira alterar ou adicionar detalhes.
  3. Caso haja alguma dúvida sobre a pergunta, adicione um comentário. O espaço de respostas deve ser utilizado apenas para responder a pergunta.
  4. Se o autor da pergunta marcar uma resposta como solucionada, esta marca aparecerá.
  5. Clique aqui para mais detalhes sobre o funcionamento do GUJ!

1 resposta

Não é a resposta que estava procurando? Procure outras perguntas com as tags java jdbc ou faça a sua própria pergunta.