Olá pessoal
Alguém pode me passar um exemplo de classe DAO que tem um método retorna uma matriz de double[][]. Preciso preencher uma matriz que retorna double com dados que vem do banco.
obs: o intuito é preencher um jfreechart ( gráfico ) que solicita uma matriz de double.
Obrigado
cara, acredito que basta você modificar sua classe DAO de consulta
[code]public double [][] lista (){
double [][] var = …
int cont = 0;
while(rs.next()){
var[cont][0] = 1.0;
var[cont][1] = 3.0;
var[cont][2] = 4.0;
cont++;
}
return var;
}[/code]
flw
Obrigado Leandro pelo apoio mas estou tentando ainda ajustar a visualização do gráfico ( jfreechart )
Vou colocar o resultado do select que tem que estou tentando acertar no preenchimento do gráfico:
codigoprojeto ano fluxo
r 0 -3440.00
r 1 200.32
r 2 320.80
r 3 190.56
r 4 120.48
r 5 1180.68
t 0 -1220.00
t 1 11.80
t 2 34.20
t 3 20.00
t 4 10.20
t 5 1101.80
x 0 -2800.00
x 1 168.76
x 2 176.56
x 3 44.80
x 4 187.20
x 5 3808.80
Explicação: cada ano, representa uma coluna no gráfico de modo que se o ano for zero, imprime um novo gráfico ( exemplo: ano 0 a ano 5 é o grafico 1 - projeto r, ano 0 a ano 5 é o grafico 2 - projeto t )
ClasseDAO
public double[][] Preencher(String grupo) throws SQLException{
Conexao conexao = new Conexao();
CallableStatement callable = conexao.getConexao().prepareCall("{call graficofluxocaixarelevante(?)} ");
callable.setString(1, grupo);
ResultSet registros = callable.executeQuery();
//fixei os valores conforme o resultado do select acima
//Obs: quando inicializo a quantidadedelinhas = 18 e a quantidade de colunas = 18 o gráfico é exibido, mas tudo com a última linha do select acima
int quantidadedecolunas = 2;
int quantidadedelinhas = 15; // ou 18
double[][] teste = new double[quantidadedelinhas][quantidadedecolunas];
int linha = 0;
int coluna = 0;
while(registros.next()){
//obj = new Grafico();
obj.setCodigoprojeto(registros.getString("codigoprojeto"));
obj.setAno(registros.getInt("ano"));
obj.setFluxo(registros.getDouble("fluxo"));
int ano = obj.getAno();
teste[linha][coluna] = obj.getFluxo();
if(ano != linha){
coluna++;
linha = 0;
}
else
{
linha++;
}
}
return teste;
}
Código que receberia esse resultado do select
public static CategoryDataset createDataset() throws SQLException {
GraficoDAO obj = new GraficoDAO();
jifAvaliacaoprojetos a = new jifAvaliacaoprojetos();
final double[][] data = new double[][]{};
// no return abaixo, segue o método "Preencher" para trazer os dados do select
return DatasetUtilities.createCategoryDataset("Entrada ", "Projeto ", obj.Preencher(a.jtGrupo.getText()));
}
Erro que dá:
conexao ok
0 - ano
teste[linha][coluna]
0 - linha
0 - coluna
-3440.0
entrou no else
1 - ano
teste[linha][coluna]
1 - linha
0 - coluna
200.32
entrou no else
2 - ano
teste[linha][coluna]
2 - linha
0 - coluna
320.8
entrou no else
3 - ano
teste[linha][coluna]
3 - linha
0 - coluna
190.56
entrou no else
4 - ano
teste[linha][coluna]
4 - linha
0 - coluna
120.48
entrou no else
5 - ano
teste[linha][coluna]
5 - linha
0 - coluna
1180.68
entrou no else
0 - ano
teste[linha][coluna]
6 - linha
0 - coluna
-1220.0
1 - ano
teste[linha][coluna]
0 - linha
1 - coluna
11.8
2 - ano
Exception in thread "main" java.lang.ArrayIndexOutOfBoundsException: 2
at Persistencia.GraficoDAO.Preencher(GraficoDAO.java:114)
at Modelo.BarChart3DDemo1.createDataset(BarChart3DDemo1.java:85)
at Modelo.BarChart3DDemo1.<init>(BarChart3DDemo1.java:40)
at Modelo.BarChart3DDemo1.main(BarChart3DDemo1.java:123)
Java Result: 1
Alguém poderia ajudar por gentileza ?
Obrigado