javaflex 26 de nov. de 2017
Qual banco de dados está usando?
Exemplo em MySql:
SET @ ordem = 0 ;
SELECT (@ ordem := @ ordem + 1 ) as ordem , t .*
FROM tabela t
ORDER BY t . pontuacao DESC
Juliane_Bernardino 27 de nov. de 2017
Estou usando o mysql mesmo.
A parte que voce explicou para fazer no banco de dados eu entendi. Mas como eu faria para mostrar essa ordem na minha tela??
Como setar essa ordem no java?
javaflex 27 de nov. de 2017
É só voce executar o SQL acima que a coluna ordem já vem pronta, da mesma forma que o restante dos campos que você já mostra.
Juliane_Bernardino 27 de nov. de 2017
E como eu adicionaria esse campo na tabela?? Teria criar uma variavel para setar nela, ou de outra forma?
Poderia me dar um exemplo?
Juliane_Bernardino 27 de nov. de 2017
Fiz um teste no mysql e a coluna ordem fica vazia
Juliane_Bernardino 27 de nov. de 2017
Queria saber como colocar essa coluna ordem na coluna da jtable
javaflex 27 de nov. de 2017
Posta um print da query sendo execudada no MySql. Informe a versão do MySql também.
Juliane_Bernardino 27 de nov. de 2017
Continuei testando e agora deu certo no mysql.
Porem ainda continuo com a duvida de acrescentar essa coluna “ordem” na minha jtable
javaflex 27 de nov. de 2017
Como você colocou as outras colunas vindas do banco, como Matricula por exemplo? É só fazer o mesmo, é só mais uma coluna que vai vir na query.
Juliane_Bernardino 27 de nov. de 2017
public ArrayList < Estudante > Classificacao () {
Connection conexao = Conexao . getConexao ();
PreparedStatement stmt = null ;
ResultSet rs = null ;
ArrayList < Estudante > estudantes = new ArrayList <> ();
try {
stmt = conexao . prepareStatement ( "SET @ordem = 0;" +
“ SELECT (@ ordem := @ ordem + 1 ) as ordem , e . id_matricula , e . nome_estudante , e . curso , e . soma ” +
“ FROM estudante e ” +
“ ORDER BY e . soma DESC ; ” );
rs = stmt . executeQuery ();
while ( rs . next ()) {
Estudante estudante = new Estudante ();
estudante . setOrdem ( rs . getInt ( "ordem" ));
estudante . setIdMatricula ( rs . getLong ( "id_matricula" ));
estudante . setNome ( rs . getString ( "nome_estudante" ));
estudante . setCurso ( rs . getString ( "curso" ));
estudante . setSoma ( rs . getInt ( "soma" ));
estudantes . add ( estudante );
}
} catch ( SQLException ex ) {
Logger . getLogger ( EstudanteDAO . class . getName ()). log ( Level . SEVERE , null , ex );
} finally {
}
return estudantes ;
}
Esse foi o codigo do dao. coloquei a coluna ordem, porem ele dá um erro ao carregar a jtable
public void classificacaoJtable () throws Exception {
DefaultTableModel modelo = ( DefaultTableModel ) jtClassificacao . getModel ();
modelo . setNumRows ( 0 );
ControleClassificacao controle = new ControleClassificacao ();
for ( Estudante est : controle . classificacao ()) {
modelo.addRow(new Object [] {est.getOrdem(), est.getNome(), est.getIdMatricula(),est.getCurso(), est.getSoma() } );
}
}
Esse foi o codigo para implementar a jtable
javaflex 27 de nov. de 2017
Quando voce debuga rs.getInt(“ordem”) vem o valor correto?
Juliane_Bernardino 27 de nov. de 2017
nov 27 , 2017 5 : 01 : 06 PM persistencia . ClassificacaoDAO Classificacao
GRAVE : null
com . mysql . jdbc . exceptions . jdbc4 . MySQLSyntaxErrorException : You have an error in your SQL syntax ; check the manual that corresponds to your MySQL server version for the right syntax to use near ‘ SELECT ( @ ordem := @ ordem + 1 ) as ordem , e . id_matricula , e . nome_estudante , e . curs ’ at line 1
at sun . reflect . NativeConstructorAccessorImpl . newInstance0 ( Native Method )
at sun . reflect . NativeConstructorAccessorImpl . newInstance ( NativeConstructorAccessorImpl . java : 62 )
at sun . reflect . DelegatingConstructorAccessorImpl . newInstance ( DelegatingConstructorAccessorImpl . java : 45 )
at java . lang . reflect . Constructor . newInstance ( Constructor . java : 423 )
at com . mysql . jdbc . Util . handleNewInstance ( Util . java : 411 )
at com . mysql . jdbc . Util . getInstance ( Util . java : 386 )
at com . mysql . jdbc . SQLError . createSQLException ( SQLError . java : 1053 )
at com . mysql . jdbc . MysqlIO . checkErrorPacket ( MysqlIO . java : 4120 )
at com . mysql . jdbc . MysqlIO . checkErrorPacket ( MysqlIO . java : 4052 )
at com . mysql . jdbc . MysqlIO . sendCommand ( MysqlIO . java : 2503 )
at com . mysql . jdbc . MysqlIO . sqlQueryDirect ( MysqlIO . java : 2664 )
at com . mysql . jdbc . ConnectionImpl . execSQL ( ConnectionImpl . java : 2794 )
at com . mysql . jdbc . PreparedStatement . executeInternal ( PreparedStatement . java : 2155 )
at com . mysql . jdbc . PreparedStatement . executeQuery ( PreparedStatement . java : 2322 )
at persistencia . ClassificacaoDAO . Classificacao ( ClassificacaoDAO . java : 70 )
at controle . ControleClassificacao . classificacao ( ControleClassificacao . java : 20 )
at visao . Classificacao . classificacaoJtable ( Classificacao . java : 38 )
at visao . Classificacao .( Classificacao . java : 30 )
at visao . TelaInicial . jButton4ActionPerformed ( TelaInicial . java : 289 )
at visao . TelaInicial . access $200 ( TelaInicial . java : 18 )
at visao . TelaInicial $3 . actionPerformed ( TelaInicial . java : 95 )
at javax . swing . AbstractButton . fireActionPerformed ( AbstractButton . java : 2022 )
at javax . swing . AbstractButton $Handler . actionPerformed ( AbstractButton . java : 2348 )
at javax . swing . DefaultButtonModel . fireActionPerformed ( DefaultButtonModel . java : 402 )
at javax . swing . DefaultButtonModel . setPressed ( DefaultButtonModel . java : 259 )
at javax . swing . plaf . basic . BasicButtonListener . mouseReleased ( BasicButtonListener . java : 252 )
at java . awt . AWTEventMulticaster . mouseReleased ( AWTEventMulticaster . java : 289 )
at java . awt . Component . processMouseEvent ( Component . java : 6533 )
at javax . swing . JComponent . processMouseEvent ( JComponent . java : 3324 )
at java . awt . Component . processEvent ( Component . java : 6298 )
at java . awt . Container . processEvent ( Container . java : 2236 )
at java . awt . Component . dispatchEventImpl ( Component . java : 4889 )
at java . awt . Container . dispatchEventImpl ( Container . java : 2294 )
at java . awt . Component . dispatchEvent ( Component . java : 4711 )
at java . awt . LightweightDispatcher . retargetMouseEvent ( Container . java : 4888 )
at java . awt . LightweightDispatcher . processMouseEvent ( Container . java : 4525 )
at java . awt . LightweightDispatcher . dispatchEvent ( Container . java : 4466 )
at java . awt . Container . dispatchEventImpl ( Container . java : 2280 )
at java . awt . Window . dispatchEventImpl ( Window . java : 2746 )
at java . awt . Component . dispatchEvent ( Component . java : 4711 )
at java . awt . EventQueue . dispatchEventImpl ( EventQueue . java : 758 )
at java . awt . EventQueue . access $500 ( EventQueue . java : 97 )
at java . awt . EventQueue $3 . run ( EventQueue . java : 709 )
at java . awt . EventQueue $3 . run ( EventQueue . java : 703 )
at java . security . AccessController . doPrivileged ( Native Method )
at java . security . ProtectionDomain $JavaSecurityAccessImpl . doIntersectionPrivilege ( ProtectionDomain . java : 76 )
at java . security . ProtectionDomain $JavaSecurityAccessImpl . doIntersectionPrivilege ( ProtectionDomain . java : 86 )
at java . awt . EventQueue $4 . run ( EventQueue . java : 731 )
at java . awt . EventQueue $4 . run ( EventQueue . java : 729 )
at java . security . AccessController . doPrivileged ( Native Method )
at java . security . ProtectionDomain $JavaSecurityAccessImpl . doIntersectionPrivilege ( ProtectionDomain . java : 76 )
at java . awt . EventQueue . dispatchEvent ( EventQueue . java : 728 )
at java . awt . EventDispatchThread . pumpOneEventForFilters ( EventDispatchThread . java : 201 )
at java . awt . EventDispatchThread . pumpEventsForFilter ( EventDispatchThread . java : 116 )
at java . awt . EventDispatchThread . pumpEventsForHierarchy ( EventDispatchThread . java : 105 )
at java . awt . EventDispatchThread . pumpEvents ( EventDispatchThread . java : 101 )
at java . awt . EventDispatchThread . pumpEvents ( EventDispatchThread . java : 93 )
at java . awt . EventDispatchThread . run ( EventDispatchThread . java : 82 )
Quando executo no debug ele dá o seguinte erro, e nao vem o valor
javaflex 27 de nov. de 2017
Tenta dessa forma pra ver se funciona no Java:
SELECT
@ ordem := @ ordem + 1 AS ordem ,
t .*
FROM tabela t ,
( SELECT @ ordem := 0 ) o
Juliane_Bernardino 27 de nov. de 2017
Precisa ter uma variavel no modelo que receba esses valores da ordem?
javaflex 27 de nov. de 2017
Isso ai já é outro assunto. Na minha opiniao o importante é ter uma classe ou estrutura de dados que simplesmente represente o resultado dessa consulta, sem misturar com outras responsabilidades.
javaflex 27 de nov. de 2017
Não seria “Estudante” (que representa só os dados cadastrais do aluno) e sim o nome específico para o relatório, por exemplo “ClassificacaoEstudante”.