Problema ResultSet e logica de persistencia

4 respostas
F

ae galera meu codigo ta assim:

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();
            }
        }
        
    }
*/
 }

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

4 Respostas

xandevieira

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.

cezarborges

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).
felipealbuquerque

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.

Raff
fernandocagrela:
ae galera meu codigo ta assim:
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();
            }
        }
        
    }
*/
 }

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


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 :) !

Criado 6 de março de 2008
Ultima resposta 6 de mar. de 2008
Respostas 4
Participantes 5