Jump to content
Sign in to follow this  
rsantos8

ResultSet java

Recommended Posts

rsantos8

Estou a fazer um programa de gestão de assistencias.

Tenho um formulario de clientes. O resultSet imprime-me  a ultima linha da base de dados. eu quero que com o botão seguinte, anterior, primeiro e ultimo ele percorra todas a linhas da base de dados. Como faço isso?

Imagem.png

 
try
         {
            Class.forName("com.mysql.jdbc.Driver");

            Connection conexao = DriverManager.getConnection("jdbc:mysql://"+
                    "localhost/MaitenanceEmp","root","ricardo");

            Statement statement = conexao.createStatement();

            ResultSet rSet = statement.executeQuery
            ("SELECT CLI_CODIGO, CLI_NOME, CLI_COD_POST, CLI_PAIS, CLI_MORADA1"
                    + ", CLI_MORADA2, CLI_TELEFONE1, CLI_TELEFONE2, CLI_FAX,"
                    + "CLI_EMAIL, CLI_CONTNUM, CLI_CONT_PAIS, CLI_WEBADRESS,"
                    + "CLI_CONTACTO FROM CLIENTE WHERE EMPRESA_ID ='"
                    + SeleccionaEmpresa.idEmpresa + "'"); 
            //
            while (rSet.next())
            {   
                cli_codigo = rSet.getString(1);
                cli_nome = rSet.getString(2);
                cli_cod_post = rSet.getString(3);
                cli_pais = rSet.getString(4);
                cli_morada1 = rSet.getString(5);
                cli_morada2 = rSet.getString(6);
                cli_telefone1 = rSet.getString(7);
                cli_telefone2 = rSet.getString(8);
                cli_fax = rSet.getString(9);
                cli_email = rSet.getString(10);
                cli_contnum = rSet.getString(11);
                cli_cont_pais = rSet.getString(12);
                cli_webadress = rSet.getString(13);
                cli_contacto = rSet.getString(14);
                
            }conexao.close();
            
            jTextField1.setText(cli_codigo);
            jTextField2.setText(cli_nome);
            jTextField3.setText(cli_morada1);
            jTextField4.setText(cli_morada2);
            jTextField5.setText(cli_cod_post);
            jTextField6.setText(cli_pais);
            jTextField7.setText(cli_telefone1);
            jTextField8.setText(cli_telefone2);
            jTextField9.setText(cli_fax);
            jTextField10.setText(cli_cont_pais);
            jTextField11.setText(cli_contnum);
            jTextField12.setText(cli_email);
            jTextField13.setText(cli_webadress);
            jTextField14.setText(cli_contacto);
            
            
           }catch (Exception ex)
            {
	ex.printStackTrace();
    }

Share this post


Link to post
Share on other sites
KTachyon

Tens o next() e o previous().


“There are two ways of constructing a software design: One way is to make it so simple that there are obviously no deficiencies, and the other way is to make it so complicated that there are no obvious deficiencies. The first method is far more difficult.”

-- Tony Hoare

Share this post


Link to post
Share on other sites
M6

E sem dizeres qual é o erro nós também não sabemos o porquê... :(


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
rsantos8

Dar erro nao dá. O que acontece é por exemplo quando eu faço rSet.previous() apareçe tudo em branco! e quando faço rSet.first ou rSet.last crasho com o programa

Share this post


Link to post
Share on other sites
M6

Humm...

Antes de mais verifica se os cursores da BD suportam .previous. Há cursores que apenas permitem avançar e, uma vez consumido o resultado actual, descartam-no.

Se assim for, e se tal for possível, terás de guardar essa informação em memória do lado do teu programa...


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
rsantos8

 public void carrega(String valor)
    {
        String value = valor;
        System.out.print(value);
        String cli_codigo = "";
        String cli_nome = "";
        String cli_cod_post = "";
        String cli_pais = "";
        String cli_morada1 = "";
        String cli_morada2 = "";
        String cli_telefone1 = "";
        String cli_telefone2 = "";
        String cli_fax = "";
        String cli_email = "";
        String cli_contnum = "";
        String cli_cont_pais = "";
        String cli_webadress = "";
        String cli_contacto = "";
        try{
            rSet = statement.executeQuery(query);
            rSet.last();
            
            if(value.equals("1"))
            {
                rSet.last();
              
            }
            else if(value.equals("2"))
            {
                rSet.next();
              
            }
            else if(value.equals("3"))
            {
                rSet.previous();
               
            }
            else if(value.equals("4"))
            {
                rSet.first();
               
            }else{ 
                rSet.last();
            }
            
                cli_codigo = rSet.getString(1);
                cli_nome = rSet.getString(2);
                cli_cod_post = rSet.getString(3);
                cli_pais = rSet.getString(4);
                cli_morada1 = rSet.getString(5);
                cli_morada2 = rSet.getString(6);
                cli_telefone1 = rSet.getString(7);
                cli_telefone2 = rSet.getString(8);
                cli_fax = rSet.getString(9);
                cli_email = rSet.getString(10);
                cli_contnum = rSet.getString(11);
                cli_cont_pais = rSet.getString(12);
                cli_webadress = rSet.getString(13);
                cli_contacto = rSet.getString(14);
            
            
            jTextField1.setText(cli_codigo);
            jTextField2.setText(cli_nome);
            jTextField3.setText(cli_morada1);
            jTextField4.setText(cli_morada2);
            jTextField5.setText(cli_cod_post);
            jTextField6.setText(cli_pais);
            jTextField7.setText(cli_telefone1);
            jTextField8.setText(cli_telefone2);
            jTextField9.setText(cli_fax);
            jTextField10.setText(cli_cont_pais);
            jTextField11.setText(cli_contnum);
            jTextField12.setText(cli_email);
            jTextField13.setText(cli_webadress);
            jTextField14.setText(cli_contacto);
        }catch(Exception e)
        {
            e.printStackTrace();
        }
    }

Com este código e chamando este método quando carrego num do botões, o primeiro e ultimo funcionam bem!o anterior só da uma vez e o seguinte, dá este erro:

-->java.sql.SQLException: After end of result set

Se os outros funcionam, deve ser compativel o uso de  cursores. o que estou a fazer mal?

Share this post


Link to post
Share on other sites
M6

Bem, a mensagem é explicita: passaste o fim do cursor.


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites
rsantos8

Mas eu estou a meter o cursor no principio, ainda tem muitos registos até ao fim.

O problema é que não estou a definir onde está o cursor e nao sei como.

Share this post


Link to post
Share on other sites
M6

A primeira coisa que fazes é mandar o cursor para o fim...

Esses if ... elseif deviam sair e serem substituidos por um case.

E se bem compreendo, invocas essa função cada vez que alguém pressiona um dos botões da tua interface.

Se assim é, não podes fazer a query de novo.

Fazes a query uma vez e depois iteras pelo resultado que obténs, caso contrário sempre que alguém invoca uma acção vais perder o estado actual do cursor...


10 REM Generation 48K!
20 INPUT "URL:", A$
30 IF A$(1 TO 4) = "HTTP" THEN PRINT "400 Bad Request": GOTO 50
40 PRINT "404 Not Found"
50 PRINT "./M6 @ Portugal a Programar."

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.