Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Rico700

com pesquisa sql

Recommended Posts

Ola amigos,

eu fiz um select que tem um COUNT() e eu queria saber como eu pego e passo pra java isso dai.

A parte sql esta certa já testei o problema é pegar o valor do count, voces podiam me dar uma força?

 

Vou mandar o codigo Qualquer duvida me falem.

 

CODE
public static int contarComandas(Date data, int idUsuario){

Connection conn = ConexaoBancoDeDados.conectar();

String sql = "select COUNT(*) from comanda where usuario_idUsuario=? and dataLanc LIKE ?";

try {

PreparedStatement pstmt = conn.prepareStatement(sql);

pstmt.setInt(1, idUsuario);

pstmt.setDate(2, (java.sql.Date) data);

ResultSet result = pstmt.executeQuery();

int count = result.getInt("COUNT(*)");

pstmt.close();

return count;

} catch (Exception ex) {

JOptionPane.showMessageDialog(null,"Exception : "+ex.getMessage());

return -1;

}finally{ ConexaoBancoDeDados.desconectar(conn);

}

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloca um "Alias" ao count, como por exemplo e outra coisa, coloque 1 em vez de *, pois melhora a performance.

 

 

public static int contarComandas(Date data, int idUsuario){
 Connection conn = ConexaoBancoDeDados.conectar();
 String sql = "select COUNT(1) as contador from comanda where usuario_idUsuario=? and dataLanc LIKE ?";
 try {
 PreparedStatement pstmt = conn.prepareStatement(sql);
 pstmt.setInt(1, idUsuario);
 pstmt.setDate(2, (java.sql.Date) data);
 ResultSet result = pstmt.executeQuery();
 int count = result.getInt("contador");
 pstmt.close();
 return count;
 } catch (Exception ex) {
 JOptionPane.showMessageDialog(null,"Exception : "+ex.getMessage());
 return -1;
 }finally{ ConexaoBancoDeDados.desconectar(conn);
 }
 }

 

Flwww, grande abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Uma duvida ali onde tem o

where com dataLanc LIKE no mysql é:

dataLanc LIKE '2008-06-20' entre aspas e ali no ponto '?' de interrogação não tem.

 

Obrigado

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ta dando alguma Exception na execução?

 

tenta colocar assim, pra ver se soluciona o problema.

 

int count = result.getInt(0);

Em relação a datas não é comum utilizar o LIKE, no seu caso seria melhor buscar pelo valor exato.

 

String sql = "select COUNT(1) as contador from comanda where usuario_idUsuario=? and dataLanc =\'?\'";

Lembrando que o \' é um caracter de scape da linguagem Java que representa uma apas simples.

 

Flww, grande abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando eu testei no mysql só trouxe a pesquisa certo com o LIKE ali para igualar.

 

O exception que dá é esse:

 

Excepion: Before start of result set

 

Tentei substituir com o codigo que voce me mostrou mesmo assim não deu.

 

Excepion: Column '0' not found.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite a todos.

 

Porque voce não tenta assim:

 

String sql = "select COUNT(1) as contador from comanda where usuario_idUsuario = ? and dataLanc = ?";

Já para pegar o valor do contador, já que ele está dando erro de column 0 not found, então sugiro voltar para essa instrução.

 

int count = getInt("contador");

Se continuar dando erro, então tente trocar o tipo de dado int pelo tipo Classe Integer assim:

 

Integer count = getInt("contador");

Outra coisa, se o SDK que está instalado na sua máquina é versão 1.4, tente mudar para versão 1.5, pois a 1.4 tem um bug com relação aos tipos de dados Int.

 

 

Um abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ja encontrei seu problema, seu problema está no resultSet, pois quando você recupera o resultSet e tenta pegar o valor do campo "contador" o resultSet se encontra com o ponteiro antes do primeiro registro do resultSet (que contem o valor do contador), faça assim:

 

 

public static int contarComandas(Date data, int idUsuario){
Connection conn = ConexaoBancoDeDados.conectar();
String sql = "select COUNT(1) as contador from comanda where usuario_idUsuario=? and dataLanc =\'?\'";
try {
PreparedStatement pstmt = conn.prepareStatement(sql);
pstmt.setInt(1, idUsuario);
pstmt.setDate(2, (java.sql.Date) data);
ResultSet result = pstmt.executeQuery();
int count = 0;
while(result.next()){
	  count = result.getInt("contador");
}
pstmt.close();
return count;
} catch (Exception ex) {
JOptionPane.showMessageDialog(null,"Exception : "+ex.getMessage());
return -1;
}finally{ ConexaoBancoDeDados.desconectar(conn);
}
}

 

Testa lá e manda pra gente se deu certo.

 

Flwww, grande abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.