Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    ResulSet da odbc oracle

    Ciao a tutti,
    volevo porre un quesito che mi opprime da ieri,quando eseguo una query che restiuisce una riga oppure nessuna riga il metodo del resulset.getrows() mi restiruisce sempre 1
    Ma come cavolo fa ????
    Non riesco a filtrare l'evento di quando non ho righe, putroppo dopo l'estrazione del recordset devo caricare tutto su una jtable e ovviamente non essendoci dati mi restuisce un errore ..
    Ci sarà un metodo per sapere che non ci sono righe !!
    grazie a tutti i volenterosi

  2. #2
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    getRow() (senza la s...) restituisce il numero della riga corrente del result set... Come/dove lo usi? Posta un po' di codice per capire il contesto...

    Intanto vedi se questo può aiutarti: http://stackoverflow.com/questions/7...-getrow-method
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  3. #3
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802

    Re: ResulSet da odbc oracle

    Originariamente inviato da tomasella_denis
    Ci sarà un metodo per sapere che non ci sono righe !!
    next() ti restituisce false. Come usarlo dipende da quello che vuoi ottenere
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  4. #4
    Grazie per la tua risposta.
    Sbattendo la testa e facendo miriade di test, ho scoperto che il problema è nella qry.
    Se eseguo la qry su una tabella ,senza join il resultset per query senza righe mi ritorna 0, mentre facendo una qry su piu tabelle come questa per capirci
    str="select in_ti_descr,in_scadenza,mc_descr from off_interventi,off_macchinari "+
    "where in_scadenza >=to_date('25/09/2013','dd/mm/yyyy') "+
    "and in_tipo='0' "+
    "and in_data is null "+
    "and mc_dt_id=9 "+
    "and mc_codice=in_mc_id "+
    "order by in_scadenza desc "
    anche se no ci sono rows mi restituisce 1 .

    Posto la classe per la connessionem da come si vede uso odbc per connettermi al db

    codice:
    public class Conn {
    
        private String utente;
        private String pass;
        private String indir;
        private ResultSet rst; 
        private ResultSetMetaData rstM;
        private Statement cmd;
        private  Connection con;
        private int nrorows;
        String error;
        String PATH =System.getenv("USERPROFILE")+"\\Manutenzione.log" ;
        PrintWriter print_line ;
      
        /*costruttore di defoult
         * 
         */
        public Conn(String ut,String pwd,String ind)
        {
        this.utente=ut;
        this.pass=pwd;
        this.indir=ind;
           
        try{
         // scrivo sil log del programma eventuali errori di connessione
            FileWriter write = new FileWriter(PATH);
            print_line = new PrintWriter(write);
            print_line.printf("denis");
             String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
             Class.forName(driver);
             String url = "jdbc:odbc:" + ind;
           
             con = DriverManager.getConnection(url, utente, pass);
           
            con.setAutoCommit(false);
        }
          
          catch (SQLException e){
           print_line.printf(e.getMessage());
           e.printStackTrace();
        }
    
        catch (ClassNotFoundException e){
           print_line.printf(e.getMessage());
           e.printStackTrace();
        }
        catch(IOException e){print_line.printf(e.getMessage());}
        }
        
        public void conn_On( String qry)
        { 
            try{
            int ret=0;     
            cmd = con.createStatement(rst.TYPE_SCROLL_INSENSITIVE, rst.CONCUR_READ_ONLY);
            rst = cmd.executeQuery(qry);
           
           
           rstM= rst.getMetaData();
         while (rst.next())
               { ret = rst.getRow();}
           this.nrorows=ret;
           rst.beforeFirst(); 
           //rst.first();
        
            }
        catch (SQLException e){
          e.printStackTrace();
        }
        }

  5. #5
    Utente di HTML.it L'avatar di Alex'87
    Registrato dal
    Aug 2001
    residenza
    Verona
    Messaggi
    5,802
    Se non usi il tag CODE il codice è illeggibile...
    SpringSource Certified Spring Professional | Pivotal Certified Enterprise Integration Specialist
    Di questo libro e degli altri (blog personale di recensioni libri) | ​NO M.P. TECNICI

  6. #6
    Sorry ecco qua
    codice:
    public class Conn {      private String utente;     private String pass;     private String indir;     private ResultSet rst;      private ResultSetMetaData rstM;     private Statement cmd;     private  Connection con;     private int nrorows;     String error;     String PATH =System.getenv("USERPROFILE")+"\\Manutenzione.log" ;     PrintWriter print_line ;        /*costruttore di defoult      *       */     public Conn(String ut,String pwd,String ind)     {     this.utente=ut;     this.pass=pwd;     this.indir=ind;             try{      // scrivo sil log del programma eventuali errori di connessione         FileWriter write = new FileWriter(PATH);         print_line = new PrintWriter(write);         print_line.printf("denis");          String driver = "sun.jdbc.odbc.JdbcOdbcDriver";          Class.forName(driver);          String url = "jdbc:odbc:" + ind;                  con = DriverManager.getConnection(url, utente, pass);                 con.setAutoCommit(false);     }              catch (SQLException e){        print_line.printf(e.getMessage());        e.printStackTrace();     }      catch (ClassNotFoundException e){        print_line.printf(e.getMessage());        e.printStackTrace();     }     catch(IOException e){print_line.printf(e.getMessage());}     }          public void conn_On( String qry)     {          try{         int ret=0;              cmd = con.createStatement(rst.TYPE_SCROLL_INSENSITIVE, rst.CONCUR_READ_ONLY);         rst = cmd.executeQuery(qry);                        rstM= rst.getMetaData();      while (rst.next())            { ret = rst.getRow();}        this.nrorows=ret;        rst.beforeFirst();         //rst.first();              }     catch (SQLException e){       e.printStackTrace();     }     }

  7. #7
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,326
    Originariamente inviato da tomasella_denis
    Sorry ecco qua
    L'avevo già sistemato io.
    In ogni caso, ripeto che non va usato il tasto CODE, ma il tag va scritto a mano all'interno del messaggio, incollando il codice fra il tag di apertura e quello di chiusura. Il tasto, serve a postare una sola riga di codice... se si incolla tutto il codice dentro la finestrella di dialogo, il risultato è che tutto il codice viene scritto su una sola riga... ovvero, quella schifezza che vedi nel tuo ultimo post.

    Il tag code si usa in questo modo:

    [CODE]
    Qui si incolla il codice
    [/CODE]


    Ciao.
    "Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
    Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza

  8. #8
    Scusate tutttttti

    codice:
    public class Conn {
    
        private String utente;
        private String pass;
        private String indir;
        private ResultSet rst; 
        private ResultSetMetaData rstM;
        private Statement cmd;
        private  Connection con;
        private int nrorows;
        String error;
        String PATH =System.getenv("USERPROFILE")+"\\Manutenzione.log" ;
        PrintWriter print_line ;
      
        /*costruttore di defoult
         * 
         */
        public Conn(String ut,String pwd,String ind)
        {
        this.utente=ut;
        this.pass=pwd;
        this.indir=ind;
           
        try{
         // scrivo sil log del programma eventuali errori di connessione
            FileWriter write = new FileWriter(PATH);
            print_line = new PrintWriter(write);
            print_line.printf("denis");
             String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
             Class.forName(driver);
             String url = "jdbc:odbc:" + ind;
           
             con = DriverManager.getConnection(url, utente, pass);
           
            con.setAutoCommit(false);
        }
          
          catch (SQLException e){
           print_line.printf(e.getMessage());
           e.printStackTrace();
        }
    
        catch (ClassNotFoundException e){
           print_line.printf(e.getMessage());
           e.printStackTrace();
        }
        catch(IOException e){print_line.printf(e.getMessage());}
        }
        
        public void conn_On( String qry)
        { 
            try{
            int ret=0;     
            cmd = con.createStatement(rst.TYPE_SCROLL_INSENSITIVE, rst.CONCUR_READ_ONLY);
            rst = cmd.executeQuery(qry);
           
           
           rstM= rst.getMetaData();
         while (rst.next())
               { ret = rst.getRow();}
           this.nrorows=ret;
           rst.beforeFirst(); 
           //rst.first();
        
            }
        catch (SQLException e){
          e.printStackTrace();
        }
        }

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.