Visualizzazione dei risultati da 1 a 7 su 7
  1. #1
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    615

    [JSP] Un buon modo per visualizzare una lista di contatti da una rubrica

    Carissimi,
    non so come passerete la notte ma io difficilmente mi staccherò da qui...

    Come sapete ho creato una rubrica telefonica grazie anche all'aiuto di Andrea, che ringrazio; adesso vorrei usarla come esercizio per spingermi un pò oltre e perfezionarla. Quale occasione migliore di imparare oltre alla pratica!

    Ecco il problema, nella mia rubrica in JSP la pagina di visualizzazione mostra un elenco di contatti inseriti come colonne di campi. Mi spiego meglio, scrivendovi il codice in linguaggio di alto livello (tanto lo scopo non è il codice in sé ma un concetto, e poi non voglio far perdere tempo a chi di voi è già stato sin troppo disponibile).

    ______________________________
    per i che va da 0 a 10,

    cognome = select cognome da tabella rubrica tale che ID = i
    telefono = select telefono da tabella rubrica tale che ID = i

    crea una etichetta cognome
    crea un campo cognome ed inserisci la variabile Cognome
    crea una etichetta telefono
    crea un campo cognome ed inserisci la variabile Telefono

    ______________________________


    Se vedete questo codice (se tale si può chiamare!) vi accorgerete che c'è un problema derivante dalla dipendenza dagli ID. Ossia, oggi ho eliminato un pò di righe e ho visto che la pagina jsp non mostrava più nulla! Dopo tantissimi tentativi ho visto che (ovviamente) essendo l'ID incrementale, dopo l'eliminazione non esistevano più id compresi tra zero e dieci. Ciò premesso la mia domanda è: come impostare una query o un comando che non mi dia la riga corrispondente all'ID = i, ma mi dia proprio la i-esima riga, indipendentemente dal suo ID?

    Grazie a tutti!

  2. #2
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    E' un problema di SQL...

    codice:
    SELECT * FROM table
    estrae tutti i record dalla tabella

    codice:
    SELECT * FROM table LIMIT 0,10
    estrae solo i primi 10 (o meno, se non ci sono 10 record), a partire dal 1° record nella tabella

    Non preoccuparti di id "mancanti"... di quello se ne occupa il database
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  3. #3
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    615
    Andrea grazie come sempre! Però così nasce un problema, perché non va più bene il mio precedente codice per gestire il tutto. Prima infatti usavo la query per restituire una riga alla volta, vincolando l'ID della riga restituita al contatore del ciclo di for. Qui invece mi servirebbe un codice diverso per recuperarle una alla volta, visto che la tua query restituisce più righe contemporaneamente. Come mi consigli di modificare il mio ciclo di for per dire qualcosa del tipo: "Di tutto l'insieme di righe che hai appena recuperato dalla query, per i che va da uno al totale delle righe restituite, dammi solo il campo cognome della iesima riga (o il campo telefono, a seconda della casella dove sto inserendo l'istruzione)".

    Scusa in anticipo se mi sono spiegato un pò da cani...

  4. #4
    Devi usare un ResultSet:

    codice:
    try {
    
            Statement stmt = tuaConnection.createStatement();
            ResultSet rs = stmt.executeQuery("SELECT * FROM tabella");
        
            while (rs.next()) {
                String s = rs.getString("colonnaCheTiInteressa");
                /*
                ....fai quello che ti serve su s
                */
    
            }
        } catch (SQLException e) {
            e.printStackTrace();
        }
    Al mio segnale... scatenate l'inferno!

  5. #5
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    615
    Impossibile, è tutta la mattina che provo questo codice!!!

    Tutte le classi di accesso al db si trovano in in MySqlRemote.java, sotto il Source Package Accesso. Invece la pagina index.jsp si trova sotto Web Pages (uso NetBeans).

    Se inserisco questo codice nella pagina jsp scrivendo la connessione ed inserendo il punto nemmeno compare createstatement (infatti se eseguo vedo un errore); se invece in MySqlRemote.java cerco di creare una nuova classe per restituirmi lo statement vedo errori ad ogni riga.

    Come faccio? Grazie

  6. #6
    Ci sono le import nella jsp?

    <%@page import="java.sql.ResultSet"%>
    <%@page import="java.sql.Statement"%>
    http://www.anobii.com/isalreadyinuse

  7. #7
    Utente di HTML.it
    Registrato dal
    May 2005
    Messaggi
    615
    Le istruzioni import erano già presenti.

    Però studiando il codice che mi avete inviato mi sono reso conto che agisce su un oggetto connessione, ed analizzando il mio codice ho visto che cercavo di ottenere uno statement su qualcosa che non era connessione ma una classe. Quindi ho creato una classe nel file MySqlRemote.java in grado di restituirmi proprio il corrispondente oggetto connessione, l'ho richiamata nella mia jsp ed ora tutto funziona a meraviglia.

    Ho l'impressione che non ci sia cosa più utile per imparare davvero che "sbattere" la testa su un problema, provare e riprovare, senza mai stancarsi. In effetti, rispetto a qualche giorno fa mi pare di aver fatto enormi passi (e piccolissime ore al pc!).

    Grazie a tutti, il quesito è risolto. Per i moderatori: come posso segnalare un quesito come risolto in modo che altri utenti non perdano il loro tempo a leggerlo? Grazie a tutti.

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.