Rico700 0 Denunciar post Postado Junho 4, 2008 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
sublyer 0 Denunciar post Postado Junho 4, 2008 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
sublyer 0 Denunciar post Postado Junho 4, 2008 Movido: Plataforma Java http://forum.imasters.com.br/public/style_emoticons/default/seta.gif Plataforma Java >> Java básico Compartilhar este post Link para o post Compartilhar em outros sites
Rico700 0 Denunciar post Postado Junho 4, 2008 Não deu liga não, o alias não funcionou. Tem mais alguma dica em o que pode ser? Compartilhar este post Link para o post Compartilhar em outros sites
Rico700 0 Denunciar post Postado Junho 4, 2008 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
sublyer 0 Denunciar post Postado Junho 4, 2008 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
Rico700 0 Denunciar post Postado Junho 4, 2008 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
Discorpio 1 Denunciar post Postado Junho 6, 2008 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
sublyer 0 Denunciar post Postado Junho 6, 2008 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