Problema ResultSet e logica de persistencia

ae galera meu codigo ta assim:

[code]import java.sql.*;

/**
*

  • @author Fernando
    */
    public class ClienteDAO {

    public boolean inclueCliente(ClienteVO vo){
    boolean retorno = false;

     Connection con = Conection.getInstance();
     if(con != null){
         try{
             PreparedStatement pstm = con.prepareStatement(
                     " insert into dados_clie(nome_clie, rua_clie, " +
                     " bairro_clie, cidade_clie, " +
                     " estado_clie, cep_clie, tel_clie, " +
                     " cel_clie, email_clie, rg_clie, depend1_clie, " +
                     "depend2_clie, depend3_clie, depend4_clie, depend5_clie," +
                     " num_clie) value(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ");
    

// consisteCliente(vo.getNome());
pstm.setString(1, vo.getNome());
pstm.setString(2, vo.getRua());
pstm.setString(3, vo.getBairro());
pstm.setString(4, vo.getCidade());
pstm.setString(5, vo.getEstado());
pstm.setString(6, vo.getCep());
pstm.setString(7, vo.getTelefone());
pstm.setString(8, vo.getCelular());
pstm.setString(9, vo.getEmail());
pstm.setString(10, vo.getRg());
pstm.setString(11, vo.getDepend1());
pstm.setString(12, vo.getDepend2());
pstm.setString(13, vo.getDepend3());
pstm.setString(14, vo.getDepend4());
pstm.setString(15, vo.getDepend5());
pstm.setString(16, vo.getNumero());

            pstm.execute();
        }catch(SQLException sqle){
            sqle.printStackTrace();
        }
    }
    return retorno;
}

/* private boolean consisteCliente(String nome){
boolean retorno = false;

    Connection con = Conection.getInstance();
         
    if(con != null){
        try{
            PreparedStatement pstm = con.prepareStatement("select nome_clie from contatos ");
            ResultSet rs = pstm.executeQuery();
            
            
        }catch(SQLException sqle){
            sqle.printStackTrace();
        }
    }
    
}

*/
} [/code]

Oque estou tentando fazer é que nao poça registrar clietnes com o mesmo nome, nao sei c esta logica esta certa, acredito que tenha uma maneira mais facil de se fazer porem esta é a maneira q eu encontrei. Pois em ele esta me dando um erro na linha do result set que nao imagino o porque do desd tard nele, dei uma paraada e fui pra outras partes do projeto para ver se consegui pensar em algo mexendo com outras coisas porem nada ainda. O erro é o seguinte:

found : java.sql.ResultSet
required: com.mysql.jdbc.ResultSet
ResultSet rs = pstm.executeQuery();
1 error
CONSTRUÇÃO FALHOU (tempo total: 0 segundos)

vlw

vc colocou o driver do banco na lib ou classpath do projeto?

Outra coisa, pq não pode existir clientes com mesmo nome? o q não pode acontecer é ter clientes com mesmo cpf, cnpj, rg ou outro documento q vc defina.

Salve.
Acredito que vc tenha 2 possiveis soluções:

  1. Definir em seu banco de dados o nome do cliente como chave primária, para isto terá que tratar a exceção; ou,
  2. Criar em seu código a verificação se já existe o cliente, e neste caso aprimore a consisteCliente(String nome).

O erro que está ocorrendo em seu código deve ser a construção do SQL. A sintaxe correta para o insert é:

INSERT INTO nome_da_tabela (campos) VALUES (valores)
Você está utilizando: INSERT INTO nome_da_tabela (campos) VALUE (valores). O correto é VALUES, não VALUE.

Creio que as soluções citadas pelo cezarborges são corretas, com apenas um porém: ao invés de definir o nome como uma chave primária, defina uma constraint UNIQUE para esse campo. Desse jeito você não terá problemas com conflitos com a chave primária já existente, se a mesma não for o nome.

[quote=fernandocagrela] ae galera meu codigo ta assim:

[code]import java.sql.*;

/**
*

  • @author Fernando
    */
    public class ClienteDAO {

    public boolean inclueCliente(ClienteVO vo){
    boolean retorno = false;

     Connection con = Conection.getInstance();
     if(con != null){
         try{
             PreparedStatement pstm = con.prepareStatement(
                     " insert into dados_clie(nome_clie, rua_clie, " +
                     " bairro_clie, cidade_clie, " +
                     " estado_clie, cep_clie, tel_clie, " +
                     " cel_clie, email_clie, rg_clie, depend1_clie, " +
                     "depend2_clie, depend3_clie, depend4_clie, depend5_clie," +
                     " num_clie) value(?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) ");
    

// consisteCliente(vo.getNome());
pstm.setString(1, vo.getNome());
pstm.setString(2, vo.getRua());
pstm.setString(3, vo.getBairro());
pstm.setString(4, vo.getCidade());
pstm.setString(5, vo.getEstado());
pstm.setString(6, vo.getCep());
pstm.setString(7, vo.getTelefone());
pstm.setString(8, vo.getCelular());
pstm.setString(9, vo.getEmail());
pstm.setString(10, vo.getRg());
pstm.setString(11, vo.getDepend1());
pstm.setString(12, vo.getDepend2());
pstm.setString(13, vo.getDepend3());
pstm.setString(14, vo.getDepend4());
pstm.setString(15, vo.getDepend5());
pstm.setString(16, vo.getNumero());

            pstm.execute();
        }catch(SQLException sqle){
            sqle.printStackTrace();
        }
    }
    return retorno;
}

/* private boolean consisteCliente(String nome){
boolean retorno = false;

    Connection con = Conection.getInstance();
         
    if(con != null){
        try{
            PreparedStatement pstm = con.prepareStatement("select nome_clie from contatos ");
            ResultSet rs = pstm.executeQuery();
            
            
        }catch(SQLException sqle){
            sqle.printStackTrace();
        }
    }
    
}

*/
} [/code]

Oque estou tentando fazer é que nao poça registrar clietnes com o mesmo nome, nao sei c esta logica esta certa, acredito que tenha uma maneira mais facil de se fazer porem esta é a maneira q eu encontrei. Pois em ele esta me dando um erro na linha do result set que nao imagino o porque do desd tard nele, dei uma paraada e fui pra outras partes do projeto para ver se consegui pensar em algo mexendo com outras coisas porem nada ainda. O erro é o seguinte:

found : java.sql.ResultSet
required: com.mysql.jdbc.ResultSet
ResultSet rs = pstm.executeQuery();
1 error
CONSTRUÇÃO FALHOU (tempo total: 0 segundos)

vlw
[/quote]
posso não ser seu interesse nesse momento cara mas quando tiver um tempo de uma lido sobre hibernate esses inserção nunca mais serão a mesmas :slight_smile: !