Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    65

    Leggere una serie di dati da un db

    Ho il seguente problema: devo leggere un dato da una tabella del db e stamparlo a video.

    codice:
    	<% Class.forName ("com.mysql.jdbc.Driver");
    Connection conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/enterprise");
    Statement stmt = conn.createStatement();
    ResultSet rs = stmt.executeQuery("SELECT nome FROM Specializzazione "); 
    %>
    <table>
    <% while(rs.next()) { 
    String s=rs.getString("nome");
    out.println(s);
    }%>
    
    </table>
     <% rs.close();
     stmt.close();
     conn.close(); 
     %>

    cosi facendo mi dà sempre lo stesso errore:

    codice:
    An error occurred at line: 31 in the jsp file: /controllospecializzazioni.jsp
    Generated servlet error:
    Connection cannot be resolved to a type
    
    An error occurred at line: 31 in the jsp file: /controllospecializzazioni.jsp
    Generated servlet error:
    DriverManager cannot be resolved
    
    An error occurred at line: 31 in the jsp file: /controllospecializzazioni.jsp
    Generated servlet error:
    Statement cannot be resolved to a type
    
    An error occurred at line: 31 in the jsp file: /controllospecializzazioni.jsp
    Generated servlet error:
    ResultSet cannot be resolved to a type
    e nn se ne va in alcun modo....

  2. #2
    Utente di HTML.it L'avatar di nether
    Registrato dal
    Dec 2006
    Messaggi
    376
    devi importare quelle classi dentro la pagina jsp se le vuoi usare li' dentro...
    aggiungi all'inizio della pagina le dichiarazioni
    codice:
    <@ page import="java.XXX.YYY"/>
    per ognuna delle classi presenti nell'errore...

  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    65
    pfff hai ragione...

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    65
    ecco un altro problema che mi si è posto:

    ho la necessità di fare un controllo se esiste già o meno uno username nel DB.

    codice:
    <% String username=request.getParameter("username");
    
    Class.forName("com.mysql.jdbc.Driver");
    Connection conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/enterprise");
    Statement stmt=conn.createStatement();
    String querySQL = "select * FROM utente WHERE username=?;";
    PreparedStatement ps = conn.prepareStatement(querySQL);
    ps.setString(1, username);
    
    //ps.executeUpdate();
    int count = ps.executeUpdate();
    
    if(count == 1) {
        out.println("Questo username è già stato utilizzato.");
    }%>
    
    
    	
    	<% 
    stmt.close();
    conn.close();
    		
    %>

    io ho fatto così, ma alla fine mi da sempre sto cavolodi errore:

    codice:
    org.apache.jasper.JasperException: An exception occurred processing JSP page /controllousername.jsp at line 43
    40: ps.setString(1, username);
    41: 
    42: //ps.executeUpdate();
    43: int count = ps.executeUpdate();
    44: 
    45: if(count == 1) {
    46:     out.println("Questo username è già stato utilizzato.");
    non capisco cosa ha di tanto brutto quella riga 43...

  5. #5
    Utente di HTML.it L'avatar di nether
    Registrato dal
    Dec 2006
    Messaggi
    376
    devi fare
    codice:
    43:    int count = ps.executeQuery();
    Perche' non e' una query di update (ed executeUpdate forse ha pure return type void, non mi ricordo), ma di select

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    65
    ho messo executeQuery ma mi dà ancora errore e cioè:

    codice:
    Type mismatch: cannot convert from ResultSet to int
    quindi è un problema di tipo di dato che mi ritorna, ma nn so come fare... :berto:

  7. #7
    Se vuoi verificare solo l'esistenza dell'username devi fare così:

    codice:
    String querySQL = "select count(*) as num FROM utente WHERE username=?;";
    PreparedStatement ps = conn.prepareStatement(querySQL);
    ps.setString(1, username);
    
    //ps.executeUpdate();
    ResultSet count = ps.executeQuery(querySQL);
    
    if(count.next()) {
        int num = rs.getString("num");
        if(num!=0)
             out.println("Questo username è già stato utilizzato.");
    }%>
    In pratica con la query verifichi quanti record con quella username ci sono (in teoria uno solo). executeQuery ti ritorna un ResultSet contenente i record risultanti dalla query (un solo record in questo caso dato che ho eseguito un count(*) nella query).
    Dopodichè fai avanzare (count.next()) il puntatore al record nel RecordSet e prelevi il campo num. Se questo è diverso da zero vuol dire che c'è almeno un utente con quella username.
    Al mio segnale... scatenate l'inferno!

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    65
    ho copiato esattamente il codice che mi hai suggerito, eppure ancora nn funziona, sembrerebbe una stronzatina ma nn la trovo..

    codice:
    <% String username=request.getParameter("username");
    
    		Class.forName ("com.mysql.jdbc.Driver");
    Connection conn= DriverManager.getConnection("jdbc:mysql://localhost:3306/enterprise");
    Statement stmt = conn.createStatement();
    		
    		
    String querySQL = "select count(*) as num FROM utente WHERE username=?;";
    PreparedStatement ps = conn.prepareStatement(querySQL);
    ps.setString(1, username);
    
    //ps.executeUpdate();
    ResultSet count = ps.executeQuery(querySQL);
    
    if(count.next()) {
        int num = rs.getString("num");
        if(num!=0)
             out.println("Questo username è già stato utilizzato.");
    }%>
    
    	<% rs.close();
    stmt.close();
    conn.close();
    		
    %>
    ERRORE CHE MI DA:

    An error occurred at line: 33 in the jsp file: /controllousername.jsp
    Generated servlet error:
    rs cannot be resolved

    An error occurred at line: 53 in the jsp file: /controllousername.jsp
    Generated servlet error:
    rs cannot be resolved

  9. #9
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    65
    ho sistemato scusate, a presto

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.