Connection connection = new ConnectionFactory().getConnection();
PreparedStatement stmt = null;
ResultSet rs = null;
try {
stmt = connection.prepareStatement(
" SELECT COUNT(*) AS contagem FROM tabelax" +
" where data = ?");
//Use parâmetros para não concatenar Strings na query
stmt.setString(1, "xxxxx");
rs = stmt.executeQuery();
//Prefira dar nomes as suas colunas de totais
return rs.next() ? rs.getInt("contagem") : 0;
} finally {
//Feche os recursos num finally
if (connection != null) connection.close();
if (stmt != null) stmt.close();
if (rs != null) rs.close();
}
ViniGodoy
cvinicius:
Faça assim:
rs.next();
Integer result = rs.getInt(1);
Por que usou Integer e não int? O método getInt sempre retorna o tipo primitivo int.
Mesmo que a coluna seja nula.
C
cvinicius
Sim eu sei que ele retorna um int primitivo, foi apenas para responder a pergunta do cmendes, mas um int primitivo pode ser visto como um Integer Wrapper, foi apenas uma maneira de exemplo.
Flw.
C
cmendes
Cara, aparentemente funcionou, mas está me dando um resultado diferente do que quando executo o comando diretamente no banco.
try {
stmt = connection.prepareStatement("" +
" SELECT COUNT(*) as c FROM tabela" +
" where data BETWEEN '19-nov-2010' AND '19-jan-2011' ");
//Use parâmetros para não concatenar Strings na query
// stmt.setString(1, "19-nov-2010");
// stmt.setString(2, "19-jan-2011");
rs = stmt.executeQuery();
//Prefira dar nomes as suas colunas de totais
System.out.println(rs.next() ? rs.getInt("c") : 0);
Apresenta resultado 103.
Já dando comando direto no banco:
apresenta 137.
Qual o significado deste comando:[b] (rs.next() ? rs.getInt("c") : 0)[/b] - o erro poderia estar aqui?
É o tipo de coisa que os professores adoram falar que é feio de fazer, mas na prática muita gente usa, e acho que deixa o código bem menor em algumas situações, como acima.
Com certeza o erro não está aí.
ViniGodoy
stmt = connection.prepareStatement(""
" SELECT COUNT(*) as c FROM tabela" +
" where data BETWEEN ? AND ?");
stmt.setDate(1, dataInicio);
stmt.setDate(2, dataFim);
Use em dataInicio e dataFim objetos do tipo Date. Você não precisa conhecer o formato de data em string do banco. Isso deixa o código mais portável, e evita a concatenação feia.