Retornar ultimo valor da coluna do BD

10 respostas
long

Ae pessoal
uma duvida..
to tentando fazer com que o meu codigo busque na coluna Cod o ultimo valor.. para eu ir adicionar nessa mesma coluna Cod um numero crescente para cada usuario
alguem pode me da uma ajuda? =\

private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) {                                         
        // TODO add your handling code here:
            try{
                Class.forName( DRIVER );
                Connection con = DriverManager.getConnection( PATH, LOGIN, SENHA );
                Statement stmt = con.createStatement( );

                if(jRadioButtonMasculino.isSelected() == true){
                 Sexo = "Masculino";
                }
                else Sexo = "Feminino";

                String consultaCod = "SELECT MAX(\"Cod\") FROM \"Alunos1\"; ";
                int contador = Integer.parseInt(consultaCod);
                contador++;
                String query = "INSERT INTO \"Alunos1\" VALUES("
                    + "'"+contador+"'"
                    + ",'"+jTextFieldNomeCliente.getText()+"'"
                    + ",'"+jTextFieldMatricula.getText()+"'"
                    + ",'"+jTextFieldNascimento.getText() +"'"
                    + ",'"+jTextFieldRG.getText() +"'"
                    + ",'"+jTextFieldCPF.getText() +"'"   
                    + ",'"+Sexo+"'"
                    + ",'"+jTextFieldCEP.getText() +"'"
                    + ",'"+jTextFieldLogradouro.getText() +"'"
                    + ",'"+jTextFieldComplemento.getText() +"'"
                    + ",'"+jTextFieldBairro.getText() +"'"
                    + ",'"+jTextFieldCidade.getText() +"'"
                    + ",'"+jComboBoxUF.getSelectedIndex() +"');";
            System.out.println( query );
            stmt.executeUpdate( query );
            ResultSet rs = stmt.executeQuery( consultaCod );
            while ( rs.next() ) {                
                codigo.add( rs.getString( 1 ) );               
                String saida = "";
                for ( int i = 1; i <= 1; i++ ) {
                    saida = saida + rs.getString( i );
                    if ( i < 1 ) saida += "\t";
                }
                System.out.println( saida );
            }

            stmt.close( );
            con.close( );

            }
            catch(SQLException e ){
            javax.swing.JOptionPane.showMessageDialog( null, "ERROR: " + e.getMessage(),
                "SQLException", javax.swing.JOptionPane.WARNING_MESSAGE );
            }
            catch(ClassNotFoundException e){
            javax.swing.JOptionPane.showMessageDialog( null, "UNREPORTED ERROR: " + e.getMessage(),
                "Unreported Exception", javax.swing.JOptionPane.WARNING_MESSAGE );
            }
    }

E outra.. digamos eu faca o meu primeiro cadastro.. quando ele for consultado la na coluna Cod.. ele retornaria 0? ou null?

10 Respostas

drsmachado

Troque as aspas duplas pelas simples "select max('cod') from..."

long

Botei aspas simples e deu erro…

drsmachado

Minha bola de cristal não está funcionando hoje, está nublado aqui.

QUAL É O ERRO?

long

Exception occurred during event dispatching: java.lang.NumberFormatException: For input string: "SELECT MAX('Cod') FROM "Alunos1"; " at java.lang.NumberFormatException.forInputString(NumberFormatException.java:48) at java.lang.Integer.parseInt(Integer.java:449) at java.lang.Integer.parseInt(Integer.java:499) at projetobiblioteca.CadUsuario1.jButton1ActionPerformed(CadUsuario1.java:356) at projetobiblioteca.CadUsuario1.access$000(CadUsuario1.java:29) at projetobiblioteca.CadUsuario1$1.actionPerformed(CadUsuario1.java:132) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:6289) at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) at java.awt.Component.processEvent(Component.java:6054) at java.awt.Container.processEvent(Container.java:2041) at java.awt.Component.dispatchEventImpl(Component.java:4652) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4482) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) at java.awt.Container.dispatchEventImpl(Container.java:2085) at java.awt.Window.dispatchEventImpl(Window.java:2478) at java.awt.Component.dispatchEvent(Component.java:4482) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644) at java.awt.EventQueue.access$000(EventQueue.java:85) at java.awt.EventQueue$1.run(EventQueue.java:603) at java.awt.EventQueue$1.run(EventQueue.java:601) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) at java.awt.EventQueue$2.run(EventQueue.java:617) at java.awt.EventQueue$2.run(EventQueue.java:615) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.awt.EventQueue.dispatchEvent(EventQueue.java:614) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:178) at java.awt.Dialog$1.run(Dialog.java:1046) at java.awt.Dialog$3.run(Dialog.java:1098) at java.security.AccessController.doPrivileged(Native Method) at java.awt.Dialog.show(Dialog.java:1096) at java.awt.Component.show(Component.java:1585) at java.awt.Component.setVisible(Component.java:1537) at java.awt.Window.setVisible(Window.java:842) at java.awt.Dialog.setVisible(Dialog.java:986) at projetobiblioteca.Painel.jButtonNovoUsuarioActionPerformed(Painel.java:462) at projetobiblioteca.Painel.access$200(Painel.java:24) at projetobiblioteca.Painel$3.actionPerformed(Painel.java:193) at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:1995) at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2318) at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:387) at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:242) at javax.swing.plaf.basic.BasicButtonListener.mouseReleased(BasicButtonListener.java:236) at java.awt.Component.processMouseEvent(Component.java:6289) at javax.swing.JComponent.processMouseEvent(JComponent.java:3267) at java.awt.Component.processEvent(Component.java:6054) at java.awt.Container.processEvent(Container.java:2041) at java.awt.Component.dispatchEventImpl(Component.java:4652) at java.awt.Container.dispatchEventImpl(Container.java:2099) at java.awt.Component.dispatchEvent(Component.java:4482) at java.awt.LightweightDispatcher.retargetMouseEvent(Container.java:4577) at java.awt.LightweightDispatcher.processMouseEvent(Container.java:4238) at java.awt.LightweightDispatcher.dispatchEvent(Container.java:4168) at java.awt.Container.dispatchEventImpl(Container.java:2085) at java.awt.Window.dispatchEventImpl(Window.java:2478) at java.awt.Component.dispatchEvent(Component.java:4482) at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:644) at java.awt.EventQueue.access$000(EventQueue.java:85) at java.awt.EventQueue$1.run(EventQueue.java:603) at java.awt.EventQueue$1.run(EventQueue.java:601) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:98) at java.awt.EventQueue$2.run(EventQueue.java:617) at java.awt.EventQueue$2.run(EventQueue.java:615) at java.security.AccessController.doPrivileged(Native Method) at java.security.AccessControlContext$1.doIntersectionPrivilege(AccessControlContext.java:87) at java.awt.EventQueue.dispatchEvent(EventQueue.java:614) at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:269) at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:184) at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:174) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:169) at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:161) at java.awt.EventDispatchThread.run(EventDispatchThread.java:122)

drsmachado

Você não precisa de aspas duplas em alunos1, caso esta seja a tabela.

"select max('cod') from alunos1";
A

Três coisas. O erro está em:

String consultaCod = "SELECT MAX(\"Cod\") FROM \"Alunos1\"; ";  
  int contador = Integer.parseInt(consultaCod);

Aqui você tenta converter sua query em um inteiro… não sei o motivo…

Segundo, o select mais certo seria:

SELECT MAX(Cod) FROM Alunos1

Já que Cod é nome de uma coluna e Alunos1 nome de tabela/view … Vocẽ não precisa de string
Em alguns bancos, no entanto, a query original funcionaria… Eles aceitam aspas duplas para identificar campos

Terceiro: não use essa fórmula de SELECT, INSERT para gerar o código da aplicação…
Isso pode gerar erro quando houver acesso concorrente.

long

drsmchado, eu tirando as aspas duplas do alunos1 ele nao funciona…
uma vez me falaram q depende do banco de dados que se utiliza e talvez mudaria a sintaxe…
alguns funciona com aspas simples outras so com aspas duplas… to usando o postgre

mas tirando um pouco de lado as apas… o resto do codigo… estaria certo? ou alguma coisa a mais para modificar
abraco

drsmachado

Só agora percebi…
O erro retornado informa que a conversão da String

"SELECT MAX('Cod') FROM "Alunos1"; "

em número falhou.
Por que?
Você chama um Integer.parse e passa como parâmetro essa String.

Primeiro você precisa ir ao banco (executar a query) e recuperar o valor na String (por que não direto o ResultSet.getInt???)

long

nao entendi exatamente como fazer isso… poderia me da um exemplo?

drsmachado

Acesse www.google.com.br
Digite select com java
Pressione enter…

Você está confundindo a String que irá fazer a consulta com a própria consulta.

Criado 27 de maio de 2011
Ultima resposta 27 de mai. de 2011
Respostas 10
Participantes 3