DevMedia - asp.net, Java, Delphi, SQL e web Design, tudo em um só lugar!
Bem vindo a DevMedia!
LOGIN:     SENHA:
 
 

Fórum DevMedia


Autor
Mensagem
NILO SOUZA
 


País: Brasil
Estado: MG
Cidade: MINAS GERAIS
Mensagens: 200
 Postado em: 23/4/2011 01:55:06 PM
 
Colegas tenho os seguintes códigos:

[CODE]

Codigo da classe GenericDAO (classe de Conexão)
 public ResultSet ExecuteQuery(String query,Object...params) throws SQLException{
       
        PreparedStatement ps = getStatement(query);
        for (int i = 0; i < params.length; i++) {
            ps.setObject(i+1, params[i]);
        }
        return ps.executeQuery();       
    }

Codigo da classe UsuaarioDAO
public int adicionarUsuario(Usuario usr) throws SQLException{          
            String sql = "insert into usuario(nome,login,senha) values(?,?,?)";      
            ExecuteQuery(sql, usr.getNome(),usr.getLogin(),usr.getSenha());
            return usr.getId();
    }

// Código da classe que do JUnit, para fazer teste
public int adicionarUsuario(Usuario usr) throws SQLException{          
            String sql = "insert into usuario(nome,login,senha) values(?,?,?)";      
            ExecuteQuery(sql, usr.getNome(),usr.getLogin(),usr.getSenha());
            return usr.getId();
    }
[/CODE]


Ao teste essa classe recebo a seguinte mensagem:
------------- Standard Error -----------------
23/04/2011 13:36:18 treinamento.DAO.UsuarioDAO adicionarUsuario
GRAVE: null
org.firebirdsql.jdbc.FBSQLException: No resultset for sql
    at org.firebirdsql.jdbc.AbstractPreparedStatement.executeQuery(AbstractPreparedStatement.java:166)
    at treinamento.DAO.GenericaDAO.ExecuteQuery(GenericaDAO.java:54)
    at treinamento.DAO.UsuarioDAO.adicionarUsuario(UsuarioDAO.java:50)
    at treinamento.DAO.UsuarioDAOTest.testAdicionarUsuario(UsuarioDAOTest.java:57)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)


Alguem poderia me dar uma ajuda por favor?


NILO SOUZA
 


País: Brasil
Estado: MG
Cidade: MINAS GERAIS
Mensagens: 200
 Postado em: 23/4/2011 01:56:10 PM
 

Citação:
Colegas tenho os seguintes códigos:

[CODE]

Codigo da classe GenericDAO (classe de Conexão)
 public ResultSet ExecuteQuery(String query,Object...params) throws SQLException{
       
        PreparedStatement ps = getStatement(query);
        for (int i = 0; i < params.length; i++) {
            ps.setObject(i+1, params[i]);
        }
        return ps.executeQuery();       
    }

Codigo da classe UsuaarioDAO
public int adicionarUsuario(Usuario usr) throws SQLException{          
            String sql = "insert into usuario(nome,login,senha) values(?,?,?)";      
            ExecuteQuery(sql, usr.getNome(),usr.getLogin(),usr.getSenha());
            return usr.getId();
    }

// Código da classe que do JUnit, para fazer teste

@Test
    public void testAdicionarUsuario() throws SQLException {
        System.out.println("adicionarUsuario");
        Usuario usr = new Usuario();
        usr.setNome("Nilo");
        usr.setLogin("nsouza");
        usr.setSenha("123");
        UsuarioDAO instance = new UsuarioDAO();
        idOfUser = instance.adicionarUsuario(usr);
        Usuario result = instance.getUser(idOfUser);
        assertEquals(idOfUser, result.getId());
   
    }

[/CODE]


Ao teste essa classe recebo a seguinte mensagem:
------------- Standard Error -----------------
23/04/2011 13:36:18 treinamento.DAO.UsuarioDAO adicionarUsuario
GRAVE: null
org.firebirdsql.jdbc.FBSQLException: No resultset for sql
    at org.firebirdsql.jdbc.AbstractPreparedStatement.executeQuery(AbstractPreparedStatement.java:166)
    at treinamento.DAO.GenericaDAO.ExecuteQuery(GenericaDAO.java:54)
    at treinamento.DAO.UsuarioDAO.adicionarUsuario(UsuarioDAO.java:50)
    at treinamento.DAO.UsuarioDAOTest.testAdicionarUsuario(UsuarioDAOTest.java:57)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)


Alguem poderia me dar uma ajuda por favor?


Davi Gomes da Costa
 

 


País: Brasil
Estado: CE
Cidade: Fortaleza
Mensagens: 1770
 Postado em: 23/4/2011 11:51:55 PM
 
Vc está adicionando um item e não realizando uma consulta, por isso não retorna ResultSet. Se vc troca seu insert por um select perceberá que não dará mais esse erro.

Em nenhum momento nesse trecho de código:

public int adicionarUsuario(Usuario usr) throws SQLException{          
            String sql = "insert into usuario(nome,login,senha) values(?,?,?)";      
            ExecuteQuery(sql, usr.getNome(),usr.getLogin(),usr.getSenha());
            return usr.getId();
    }


@Test
    public void testAdicionarUsuario() throws SQLException {
        System.out.println("adicionarUsuario");
        Usuario usr = new Usuario();
        usr.setNome("Nilo");
        usr.setLogin("nsouza");
        usr.setSenha("123");
        UsuarioDAO instance = new UsuarioDAO();
        idOfUser = instance.adicionarUsuario(usr);
        Usuario result = instance.getUser(idOfUser);
        assertEquals(idOfUser, result.getId());
   
    }


Vc adicionou um id para o Usuario usr, não é JPA que através do mapeamento vai pegar o id do seu banco.
Mas p PreparedStatement tem um método que talvez possa te ajudar.

ps.executeUpdate(sql, autoGeneratedKeys);

Espero ter ajudado, só para finalizar para vc dar um insert use somente execute(), ele retorna um boolean, que talvez vc possa usar no seu teste é bom ver a documentação para ver em que situação ele te retorna true ou false.

Att Davi
Davi Gomes da Costa
 

 


País: Brasil
Estado: CE
Cidade: Fortaleza
Mensagens: 1770
 Postado em: 26/4/2011 07:51:02 AM
 
E ai deu certo? Algum feedBack?

Caso tenha resolvido favor fechar pendência.

Att Davi
DYEGO SOUZA DO CARMO
 

 


País: Brasil
Estado: PR
Cidade: xxxxx
Mensagens: 1836
 Postado em: 26/4/2011 10:06:38 AM
 
Resolvido ?

Se sim , por favor feche o chamado :)
NILO SOUZA
 


País: Brasil
Estado: MG
Cidade: MINAS GERAIS
Mensagens: 200
 Postado em: 26/4/2011 06:19:42 PM
 
Não resolvi, assim que voltar respondo.
volto amanha.
NILO SOUZA
 


País: Brasil
Estado: MG
Cidade: MINAS GERAIS
Mensagens: 200
 Postado em: 27/4/2011 11:08:08 PM
 
Ola, já estou em casa. Na verdade não resolveu. Abaixo toda a minha classe de teste para ajudar na compreensão do que fiz. Obrigado desde já pela ajuda!

[CODE]

package treinamento.DAO;

import com.sun.xml.internal.ws.wsdl.writer.UsingAddressing;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.List;
import org.junit.After;
import org.junit.AfterClass;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.Test;
import static org.junit.Assert.*;
import treinamento.entidade.Usuario;

/**
 *
 * @author nsouza
 */
public class UsuarioDAOTest {
   
     public static Integer idOfUser = 0;
   
    public UsuarioDAOTest() {
    }

    @BeforeClass
    public static void setUpClass() throws Exception {
    }

    @AfterClass
    public static void tearDownClass() throws Exception {
    }
   
    @Before
    public void setUp() {
    }
   
    @After
    public void tearDown() {
    }
   
    @Test
    public void testGetUser() throws Exception {
        System.out.println("getUser");
        int IdUser = idOfUser;
        UsuarioDAO instance = new UsuarioDAO();
        Integer expResult = idOfUser;
        Usuario result = instance.getUser(IdUser);
        assertEquals(expResult, result.getId());      
    }
   
    @Test
    public void testAdicionarUsuario() throws SQLException {
        System.out.println("adicionarUsuario");
        Usuario usr = new Usuario();
        usr.setNome("Nilo");
        usr.setLogin("nsouza");
        usr.setSenha("123");
        UsuarioDAO instance = new UsuarioDAO();
        idOfUser = instance.adicionarUsuario(usr);
        Usuario result = instance.getUser(idOfUser);
        assertEquals(idOfUser, result.getId());
   
    }
   
    //@Test
    public void testValidarUsuarioSenha() {
        System.out.println("validarUsuarioSenha");
        String usuario = "";
        String senha = "";
        UsuarioDAO instance = new UsuarioDAO();
        boolean expResult = false;
        boolean result = instance.validarUsuarioSenha(usuario, senha);
        assertEquals(expResult, result);
        // TODO review the generated test code and remove the default call to fail.
        fail("The test case is a prototype.");
    }
   
   
    //@Test
    public void testRemoveUsuario() {
        System.out.println("removeUsuario");
        int idUser = 0;
        UsuarioDAO instance = new UsuarioDAO();
        instance.removeUsuario(idUser);
        // TODO review the generated test code and remove the default call to fail.
        fail("The test case is a prototype.");
    }
 
  

    /*
     * @Test
    public void testGetUser() throws Exception {
        System.out.println("getUser");
        int idUser = idOfUser;
        UserDAO instance = new UserDAO();
        Integer expResult = idOfUser;
        User result = instance.getUser(idUser);
        assertEquals(expResult, result.getId());
    }
     */
   // @Test
    public void testAtualizaUsuario() {
        System.out.println("atualizaUsuario");
        Usuario User = null;
        UsuarioDAO instance = new UsuarioDAO();
        instance.atualizaUsuario(User);
        // TODO review the generated test code and remove the default call to fail.
        fail("The test case is a prototype.");
    }

   

    /**
     * Test of getAllUsers method, of class UsuarioDAO.
     */
   // @Test
    public void testGetAllUsers() throws Exception {
        System.out.println("getAllUsers");
        UsuarioDAO instance = new UsuarioDAO();
        List expResult = null;
        List result = instance.getAllUsers();
        assertEquals(expResult, result);
        // TODO review the generated test code and remove the default call to fail.
        fail("The test case is a prototype.");
    }

    /**
     * Test of populateUserInfo method, of class UsuarioDAO.
     */
   // @Test
    public void testPopulateUserInfo() throws Exception {
        System.out.println("populateUserInfo");
        ResultSet rs = null;
        Usuario expResult = null;
        Usuario result = UsuarioDAO.populateUserInfo(rs);
        assertEquals(expResult, result);
        // TODO review the generated test code and remove the default call to fail.
        fail("The test case is a prototype.");
    }
}

[/CODE]
web-03
DevMedia  |  Anuncie  |  Fale conosco
Hospedagem web por Porta 80 Web Hosting
2013 - Todos os Direitos Reservados a web-03