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

    Stampare una classifica

    Ciao, ho un piccolo problema !!!

    **********************************************

    Dunque, ho un Database (MYSQL), all’interno ho una tabella (Utenti), e una tabella (Tag)…


    all’interno della tabella utenti ho i seguenti campi:

    id,nickname, password, email


    all’interno della tabella tag ho i campi:

    nometag,voti


    Il problema è questo. Un utente si registra, e ha la possibilità di cliccare su un tag presente in un sito web, non appena clicca si auto incrementa il campo “voti”…

    Adesso come faccio a far stampare i primi 15 tag che hanno preso più voti?...non ho capito come farlo ne logicamente, ne a livello di codice, potreste aiutarmi?...

  2. #2
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    Da tuo Db prelevi i dati ORDER BY campo_interessato DESC.
    In questo modo, una volta ricevuto il risultato, se ResultSet ha una dimensione minore di 15 prendo tutti i valori, altrimenti prendo solamente i primi 15.
    Chiaro ( almeno la logica e non l'implementazione ) ?
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

  3. #3

    ...

    Ho fatto così soltanto che mi stampa tutto non soltanto i primi 15

    package test;

    //Dichiaro la classe;


    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;

    public class TestDue{
    public static void main(String[]args) throws ClassNotFoundException, SQLException{

    try{

    String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
    Class.forName(driver);

    //Creo la stringa di connessione;
    String url = "jdbcdbc:Summerschool";
    Connection con = DriverManager.getConnection(url);

    java.sql.Statement cmd = con.createStatement();
    String qry = "SELECT *FROM Utenti ORDER BY voti DESC";
    ResultSet res = cmd.executeQuery(qry);

    //Stampo i risultati;
    for(int i = 0; i < 10; i++){
    res.next();
    System.out.println("");
    System.out.println(res.getString("nickname"));
    System.out.println(res.getString("password"));
    System.out.print(res.getString("voti"));
    System.out.println("");

    }

    res.close();
    cmd.close();
    con.close();


    }

    catch(SQLException e){
    e.printStackTrace();
    }

    catch(ClassNotFoundException e){
    e.printStackTrace();
    }
    }
    }

  4. #4
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    Punto primo....i tag code....se non sai come usarli leggi il regolamento, altrimenti il codice diventa illeggibile.

    Punto secondo.
    codice:
    for(int i = 0; i < 10; i++){
    res.next();
    System.out.println("");
    System.out.println(res.getString("nickname"));
    System.out.println(res.getString("password"));
    System.out.print(res.getString("voti"));
    System.out.println("");
    
    }
    Stampi 10 record, e quindi va bene, ma quanti record hai nel db?
    E se sono meno di 10?
    meglio fare:
    codice:
    int numRecord = 0;
    while( rs.next() || numRecord < 15 ){
          //prelevo i dati
          numRecord++;
    }
    Nipote: persona incompetente, con le soli doti di "copia/incolla" e la creazione automatica di siti internet ed interfaccie grafiche.Compie lavori apparentemente qualificati e richiesta una modifica sparisce in quatemala con i pochi soldi ottenuti.[...] Fonte la Diegonzelli

  5. #5

    ...

    quindi il codice si trasforma così:

    però non funge lo stesso !!! all'intero del db ci sono 18 record...e il campo voti è diverso x tutti.


    package test;

    //Dichiaro la classe;


    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.SQLException;

    public class TestDue{
    public static void main(String[]args) throws ClassNotFoundException, SQLException{

    try{

    String driver = "sun.jdbc.odbc.JdbcOdbcDriver";
    Class.forName(driver);

    //Creo la stringa di connessione;
    String url = "jdbcdbc:Summerschool";
    Connection con = DriverManager.getConnection(url);

    java.sql.Statement cmd = con.createStatement();
    String qry = "SELECT *FROM Utenti ORDER BY voti DESC";
    ResultSet res = cmd.executeQuery(qry);

    //Stampo i risultati;
    int numRecord = 0;
    while( res.next() || numRecord < 15 ){
    //prelevo i dati
    System.out.println("");
    System.out.println(res.getString("nickname"));
    System.out.println(res.getString("password"));
    System.out.print(res.getString("voti"));
    System.out.println("");

    numRecord++;
    }

    res.close();
    cmd.close();
    con.close();


    }

    catch(SQLException e){
    e.printStackTrace();
    }

    catch(ClassNotFoundException e){
    e.printStackTrace();
    }
    }
    }

  6. #6

    ...

    funziona ...grazie mille !!!

  7. #7
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    18
    in generale è comunque consigliato filtrare il numero di record estratti già a livello di query... così da non avere l'intero recordset caricato in memoria se non necessario

    su MySql esiste il comando LIMIT che ti consente di definire il numero massimo di record da estrarre

    es.
    SELECT * FROM Utenti ORDER BY voti DESC LIMIT 0, 15


    ciao

  8. #8

    ...

    un'altra cosa, io però questo discorso lo dovrei fare utilizzando ejb 3, quindi i pojo, adesso la connessione al database è situata all'interno di un file xml, ma per fare una query a oggetti esterna come dovrei fa?

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 © 2026 vBulletin Solutions, Inc. All rights reserved.