Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente di HTML.it L'avatar di dako
    Registrato dal
    Dec 2008
    Messaggi
    8

    [JSP] Problemi di accesso e ResultSet

    Ciao a tutti,
    ho un problema che mi sta stressando un bel pò, soprattutto perchè non riesco a trovare la soluzione per questo mi affido a voi perchè di sicuro ne saprete più di me. Sto creando una pagina jsp che mi logga gli utenti prelevando i dati dal Db ma non capisco perchè il ResultSet si riempie ma il confronto fra stringhe non va a buon fine. Vi posto il codice magari riuscite a capirci qualcosa:

    <%@ page language="java" import="java.util.*, java.sql.*" %>
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="UTF-8"%>
    <%@ page import ="java.io.IOException , java.io.PrintWriter , java.sql.ResultSet , java.sql.SQLException , java.sql.Statement" %>
    <%@page import="fc.Connessione"%>

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
    <%
    Connessione conn = new Connessione(); //la connessione la prelevo da una classe Java e funge bene perchè faccio con tranquillità l'inserimento
    Statement st = null;
    ResultSet rs = null;

    String U = request.getParameter("User"); //prendo il contenuto delle textfield del form html
    String P = request.getParameter("Password");

    st = conn.conness();
    rs = st.executeQuery("Select * from Utentitutti"); //eseguo la query e me la memorizzo nel ResultSet
    while(rs.next()){ //scorro nel ResultSet
    if(rs.getString(7).equals(U)){ //confronto il campo User del mio db che si trova alla colonna 7 con il valore della textfield ma non lo fa!
    System.out.println("FATTO");
    }else{
    System.out.println(rs.getString(7).equals(U)); //qualsiasi confronto mi da sempre false
    }
    }
    %>
    </body>
    </html>

    l'if non fa nulla e mi stampa sempre a comunque l'else.
    Aspetto vostre notizie.

  2. #2
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537

    Re: [JSP] Problemi di accesso e ResultSet

    Originariamente inviato da dako
    l'if non fa nulla e mi stampa sempre a comunque l'else.
    Aspetto vostre notizie.
    Innanzittuto buongiorno.
    Allora, ti consiglio di fare questa prova.
    La select cambiala in questo modo:
    SELECT USER FROM UTENTITUTTI
    e poi rs.getString(1).equals( U );

    Questo per farti verificare che sia corretto il numero di colonna ( 7 ) che leggi.

    Inoltre nel System.out dell'else dai più informazioni, ovvero stampa a video una cosa simile:
    System.out.println( rs.getString( 7 ) + " == " + U + " ? " + ( rs.getString( 7 ).equals( U ) );
    In questo modo hai molte più informazioni.

    Ovvio che anche qui andrai a sostituire 1 a 7 se applichi le modifiche precedenti.

    Facci sapere
    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
    Utente di HTML.it L'avatar di dako
    Registrato dal
    Dec 2008
    Messaggi
    8

    Prova fatta

    Raga ho provato a modificare il codice, ma nessun esito positivo, o meglio:
    Il primo campo della mia tabella si chiama Nome e contiene un valore: "d"
    La modifica apportata all'rs.getString() da (7) a (1) mi da questo in output:

    d == d ? false
    z == d ? false
    a == d ? false

    la prima colonna si riferisce ai campi nel Db, la seconda al valore inserito in input e non capisco perchè d = d è false.

  4. #4
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537
    non ha molto senso.....spazi?Niente spazi?
    fai una prova anche con .equalsIgnoreCase( U ) , giusto per curiosità....
    Cmq non so davvero....ci sarà qualche scemata che non vedo....mi stampi anche rs.getString(1).length() ?
    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
    Utente di HTML.it L'avatar di dako
    Registrato dal
    Dec 2008
    Messaggi
    8

    Nulla di fatto

    rs.getString(7).length() cade in eccezione e riguardo ell'equalsIgnoreCase ci avevo già provato ma senza risultati perchè non fa altro che darmi sempre lo stesso output

  6. #6
    Utente di HTML.it L'avatar di @DI3GO@
    Registrato dal
    Nov 2008
    Messaggi
    537

    Re: Nulla di fatto

    Originariamente inviato da dako
    rs.getString(7).length() cade in eccezione e riguardo ell'equalsIgnoreCase ci avevo già provato ma senza risultati perchè non fa altro che darmi sempre lo stesso output
    mi dici l'eccezione?
    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

  7. #7
    Utente di HTML.it L'avatar di dako
    Registrato dal
    Dec 2008
    Messaggi
    8
    allora...scusami annulla l'eccezione,
    rs.getString(1).length() mi da in output

    3
    3
    3

  8. #8
    Utente di HTML.it L'avatar di dako
    Registrato dal
    Dec 2008
    Messaggi
    8
    Non riesco a venirne a capo, e sto continuando a cercare tutte le possibile combinazioni che possano cercare di aggirare il problema, cosa ne pensate di quest'altro, l'output però è sempre lo stesso;

    <%@ page language="java" import="java.util.*, java.sql.*" %>
    <%@ page language="java" contentType="text/html; charset=ISO-8859-1" pageEncoding="UTF-8"%>
    <%@ page import ="java.io.IOException , java.io.PrintWriter , java.sql.ResultSet , java.sql.SQLException , java.sql.Statement" %>
    <%@page import="fc.Connessione"%>

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
    <title>Insert title here</title>
    </head>
    <body>
    <%
    String driver="com.mysql.jdbc.Driver";
    String connectionUrl="jdbc:mysql://localhost:3306/FantacalWeb?user=root&password=";

    try {
    Class.forName(driver);
    } catch (Exception e){
    System.out.println("Errore di connessione al db");
    }
    Connection conn = null;
    //Statement st= null;
    //ResultSet rs= null;

    //String user = request.getParameter("User");
    //String pass = request.getParameter("Password");
    try {
    conn = DriverManager.getConnection(connectionUrl);
    String sql = "Select * FROM Utentitutti";
    Statement st = conn.createStatement();
    ResultSet rs = st.executeQuery(sql);
    String uu = request.getParameter("User");
    String pp = request.getParameter("Password");

    while(rs.next()){
    String u = rs.getString(7);
    String p = rs.getString(8);
    System.out.println(u);
    System.out.println(p);

    //if(request.getParameter("User").equalsIgnoreCase(u ) && request.getParameter("Password").equalsIgnoreCase( p)){
    if(u.equalsIgnoreCase(uu)){

    out.println("Utente Autenticato");
    response.sendRedirect("Index.jsp");
    }
    else {
    out.println("niente");
    //response.sendRedirect("FormRegistra.jsp");
    }
    }
    }// fine try
    catch (Exception e) {
    out.println("Hai sbagliato tutto");
    }


    %>

    </body>
    </html>


    Mi itera sempre tutti i record della tabella e mi entra sempre nell'else come se non vedesse if(u.equalsIgnoreCase(uu))

  9. #9
    Utente di HTML.it
    Registrato dal
    Aug 2002
    Messaggi
    8,013
    Al di là della query in se stessa, che è opinabile (perché iteri su tutti i record con una query così generica, invece di andare direttamente alla ciccia con:

    codice:
    SELECT * FROM tabella_utenti WHERE username = UserNameInRequest AND password = PasswordInRequest
    Verificando che vada a buon fine e che venga estratta solo una riga?

    Ad ogni modo, stampa un po' tutto quello che tiri fuori dalla query e vedi anche di aggiungere un carattere jolly all'inizio e alla fine, in modo da verificare che effettivamente non vi siano spazi.

    Poi, usa i nomi delle colonne invece che un benedetto indice, li hanno messi apposta.
    <´¯)(¯`¤._)(¯`»ANDREA«´¯)(_.¤´¯)(¯`>
    "The answer to your question is: welcome to tomorrow"

  10. #10
    Utente di HTML.it L'avatar di dako
    Registrato dal
    Dec 2008
    Messaggi
    8
    Ho provato con questa select:

    rs = st.executeQuery("Select * from Utentitutti WHERE User='"+U+"' AND Password='"+P+"'");

    il tutto viene eseguito con successo senza generare problemi, ma in output questa volta non mi da assolutamente nulla...perchè?
    Riguardo al problema sollevato riguardante gli indici... diciamo che non cambierebbe molto la situazione ma se può servirti a qualcosa saperlo

    rs.getString(7) è la User
    rs.getString(8) è la Password

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.