Pessoal, preciso colocar os dados de uma consulta sql em array para imprimir um gráfico, mas não sei como fazer isso, alguém pode me ajudar?
<%@ include file="conexao_banco.jsp" %>
<%
Statement st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs = null;
rs = st.executeQuery("SELECT status, count(*) FROM ata where status!='' and (MONTH(DATA)= '"+request.getParameter("novaPos")+"')and (YEAR(data)= '"+nome+"' ) group by status");
var status = new Array(); //Aqui deve armazenar os status
var valores = new Array(); // Aqui deve armazenar a qtde agrupada por status
while(rs.next()){
//DAQUI EM DIANTE NÃO SEI COMO ARMAZENAR DENTRO DO WHILE.
}
%>
<SCRIPT language=JavaScript> <!--
graph = new BAR_GRAPH("vBar");
graph.labels = "Jan.,Feb.,Mar.,Apr.,May";
graph.titles = "Month,Sales,Per-cent";
//PRECISO SUBSTITUIR OS VALORES "380,150,260,310,430" ABAIXO PEOLOS VALORES DA CONSULTA PARA GERAR O GRÁFICO
graph.values = "380,150,260,310,430";
graph.legend = "2001,2002";
graph.showValues = 1;
document.write(graph.create());
//--> </SCRIPT>
Daí você pode criar um objeto que contenha esses dois atributos e ao invés de guardar a String, crie um list desse teu objeto, tenta aí e qualquer coisa dá um grito!
Posso estar falando besteira, mas acho que vc poderia criar um objeto contendo esses dois atributos (qtde e status) e adicionar esses objetos na list.
Ficaria algo como:
List l = new ArrayList();
while(rs.next()){
obj = new Objeto();
obj.setQtde(rs.getString("qtde"));
obj.setStatus(rs.getString("status"));
s.add(obj);
}
Ei, sou iniciante em java(jsp) e preciso muito fazer essa consulta para gerar esse gráfico… Em php tranquilo, mas estou me batendo um monte no jsp.
Algum de vocês poderia quebrar esse galho e me ajudar a desenvolver isso, cabe como aprendizado para mim estudar o que vcs fizerem.
No Javascript abaixo preciso informar os valores da consulta nos campos:
graph.labels = “NOMES DOS STATUS AQUI (SEPARADOS POR VÍRGULA)”;
Ex: (Pendente,Cancelado, Concluido)
graph.values = “VALORES DA CONTA AQUI (SEPARADOS POR VÍRGULA)”;
Ex: (30,20,60)
<SCRIPT language=JavaScript> <!--
graph = new BAR_GRAPH("vBar");
graph.labels = "NOMES DOS STATUS AQUI (SEPARADOS POR VÍRGULA)";
graph.values = "VALORES DA CONTA AQUI (SEPARADOS POR VÍRGULA)";
graph.showValues = 1;
document.write(graph.create());
//--> </SCRIPT>
<%@ include file="conexao_banco.jsp" %>
<%
Statement st = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE,ResultSet.CONCUR_READ_ONLY);
ResultSet rs = null;
rs = st.executeQuery("SELECT status, count(*) as conta FROM ata group by status");
List<String> s = ArrayList<String>();
while(rs.next()){
s.add(rs.getString("status"));
s.add(rs.getString("conta"));
}
%>
Antes das tuas tags script você consulta no banco os seus dados, só que ao invés de salvar em um list vamos salvar os status e as contas em uma string já separadas por vírgulas
//usamos essa classe para concatenar para fins de performance
StringBuilder contas = new StringBuilder();
StringBuider status = new StringBuilder();
while(rs.next()){
//concatena a conta e a virgula junto
contas.append(rs.getString("conta")).append(",");
//concatena o status e a virgula junto
status.append(rs.getString("status")).append(",");
}
sugiro dar uma lida nos fundamentos da linguagem, pois pelo que você falou lógica você tem só lhe falta conhecimento técnico, dê uma olhada no tutorial da Sun sobre Java
1ª: Não utilizar codigo Java em sua JSP, isto pode te trazer serios problemas mais para frente, principalmente para fazer manuntenção.
2ª: Recomendo você estudar Struts, JDBC e arquitetura MVC, isto de ajudara muito em suas aplicações. A apostila disponivel para download da Caelum FJ-21 e explica bem e de uma maneira facil.
3ª estudar um poko de coleções no curso FJ-11 isso é bem explicado.