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

    Problema con i DAO e interazione con i tipi enum e date

    Buonasera,
    Nella creazione del dao GaraDao.class sto cercando di creare la query:

    codice:
    public Gara CercaperCodiceGara(String CodiceGara)
    {
    Gara g= new Gara();
    ArrayList<String> result= Db.Connection.getIstance().eseguiquery("SELECT * FROM gara WHERE CodiceGara=' "+CodiceGara+" ');
    if(result.size()==0) return null;
    
    String[] riga=result.get(0);
    
    g.setNomeEvento(riga[1]);
    g.setInfopagamento(riga[3]);
    g.setDataEvento(riga[4]);
    g.setCosto(riga[5]);
    
    return g;
    }

    Le "variabili" incriminate della classe Gara in questione sono:

    InfoPagamento di tipo enum
    DataAzione di tipo date
    Costo di tipo float


    Nelle ultime 3 set mi dice che i metodi sono undefined per il tipo Gara,come si pu� risolvere il problema?

    Ho visto inoltre che nella classe DbConnection si pu� sostituire ArrayString in ArrayObject..� fattibile? Cosa cambierebbe nel mio codice?
    Ultima modifica di LeleFT; 20-01-2017 a 10:36 Motivo: Aggiunti i tag CODE

  2. #2
    Quote Originariamente inviata da matteom96 Visualizza il messaggio
    Buonasera,
    Nella creazione del dao GaraDao.class sto cercando di creare la query:

    codice:
    public Gara CercaperCodiceGara(String CodiceGara)
    {
    Gara g= new Gara();
    ArrayList<String> result= Db.Connection.getIstance().eseguiquery("SELECT * FROM gara WHERE CodiceGara=' "+CodiceGara+" ');
    if(result.size()==0) return null;
    
    String[] riga=result.get(0);
    
    g.setNomeEvento(riga[1]);
    g.setInfopagamento(riga[3]);
    g.setDataEvento(riga[4]);
    g.setCosto(riga[5]);
    
    return g;
    }

    Le "variabili" incriminate della classe Gara in questione sono:

    InfoPagamento di tipo enum
    DataAzione di tipo date
    Costo di tipo float


    Nelle ultime 3 set mi dice che i metodi sono undefined per il tipo Gara,come si pu� risolvere il problema?

    Ho visto inoltre che nella classe DbConnection si pu� sostituire ArrayString in ArrayObject..� fattibile? Cosa cambierebbe nel mio codice?
    Chi mi puó aiutare per favore?

  3. #3
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,325
    Beh... per risolvere il problema bisogna passare i valori corretti a quei metodi.

    Se il metodo setInfoPagamento() si aspetta come parametro una Enum, non gli puoi passare una String. Dovrai essere tu a "convertire" il valore stringa nel corrispondente valore Enum... lo stesso dicasi per gli altri.

    Per i tipi Date è più semplice perchè esistono delle classi che già ti permettono di parsare una stringa nel relativo oggetto Date (bisogna però che la stringa sia formattata correttamente)... per la Enum c'è un po' più di lavoro da fare e a tal proposito puossono esserti utili i suggerimenti di andbin in questa discussione.


    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

  4. #4
    Come si pu� fare il parse del date? Ho provato con un metodo ma risultava deprecato..idem per l'intero..sono stato fino alle 4 di mattina a cercare di risolvere quel problema...

  5. #5
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,325
    Per convertire una stringa (che rappresenta un numero) nel corrispondente valore ci sono i metodi delle relative classi wrapper (esempi a milioni sul web). Ad esempio, nel tuo caso hai bisogno di un valore float:

    codice:
    String str = "15.5";   // Esempio in "str" ho la stringa col valore
    float valore = Float.parseFloat( str );

    C'è una classe wrapper per ogni tipo primitivo: Integer, Long, Byte, Character, Float, Double... ciascuno coi propri metodi per effettuare il parse di un valore stringa nel relativo valore primitivo.

    Per le date si usa, semplicemente, un formatter: SimpleDateFormat col formato preciso della stringa. Esempio:

    codice:
    String strData = "15/12/2016";   // la data è nel formato dd/MM/yyyy
    SimpleDateFormat sdf = new SimpleDateFotmat("dd/MM/yyyy");
    Date data = null;
    try {
       data = sdf.parse( strData );
    } catch (Exception e) {
       // La stringa passata non è nel formato corretto o rappresenta una data inesistente
       e.printStackTrace();
    }

    Ti linko la documentazione di SimpleDateFormat per una panoramica completa dei formati che si possono usare (in base a come ti arriva formattata la data, ovviamente)


    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

  6. #6
    in questo caso il codice � cosi per caso?
    codice:

    codice:
    public Gara CercaperCodiceGara(String CodiceGara)
    {
    Gara g= new Gara();
    ArrayList<String> result= Db.Connection.getIstance().eseguiquery("SELECT * FROM gara WHERE CodiceGara=' "+CodiceGara+" ');
    if(result.size()==0) return null;
    
    String[] riga=result.get(0);
    String str5=riga[5]; 
    String str4=riga[4]; 
    SimpleDateFormat sdf= new SimpleDateFormat();
    Date data=null;
    Try {
       data = sdf.parse( str4);
    } catch (Exception e) {
       // La stringa passata non � nel formato corretto o rappresenta una data inesistente
       e.printStackTrace();
    }
    g.setNomeEvento(riga[1]);
    g.setInfopagamento(riga[3]);
    g.setDataEvento(data);
    g.setCosto(float.parseFloat(str5));
    
    return g;
    Ultima modifica di LeleFT; 20-01-2017 a 16:41 Motivo: Aggiunti i tag CODE

  7. #7
    A simpledateformat("yyyy-mm-dd")...

  8. #8
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,325
    Attenzione: "mm" è un segnaposto per i minuti (di un orario), non per i mesi... "MM" maiuscolo per i mesi.


    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

  9. #9
    Quote Originariamente inviata da LeleFT Visualizza il messaggio
    Attenzione: "mm" è un segnaposto per i minuti (di un orario), non per i mesi... "MM" maiuscolo per i mesi.


    Ciao.

    Grazie mille per tutto,ora mi é piú chiaro

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.