Java swing e sql

di il
4 risposte

Java swing e sql

Buonasera devo fare un form di registrazione di utenti in java swing con sql database la query è la seguente che ho realizzato:
public class DaoUtente {
	
	public static boolean creaUtente(Utente utente) throws SQLException,Exception
	{
		final String INSERIMENTO = "INSERT INTO utenti(nome, cognome, email, password, NumeroTelefonico, DataDiNascita) VALUES (?,?,?,?,?,?)";
		Connection conn = null;
		PreparedStatement stmt = null;
		
		if(effettua_accesso(utente.getEmail(),utente.getPassword()))   
		{
			conn = DBconnection.getInstance().getConn();
			stmt = conn.prepareStatement(INSERIMENTO);
			stmt.setString(1, utente.getNome());
			stmt.setString(2, utente.getCognome());
			stmt.setString(3, utente.getEmail());
			stmt.setString(4, utente.getPassword());
			stmt.setString(5, utente.getNumeroTelefonico());
			stmt.setString(6, utente.getDataDiNascita());
			stmt.executeUpdate();
			stmt.close();
			conn.close();
			return true;
		}
		return false;
			
	}
	
	
		public static boolean effettua_accesso(String Email, String password) throws SQLException,Exception
	{
		final String RICERCA_PASSWORD="SELECT*FROM utenti where Email=? and password=?"; 
    	Connection conn = DBconnection.getInstance().getConn();
		PreparedStatement stmt = conn.prepareStatement(RICERCA_PASSWORD);
		stmt.setString(1, Email);
		stmt.setString(2,password);
		ResultSet rs=stmt.executeQuery();
			
			if(!rs.next())
			{
				rs.close();
				return false;
			}
			else
			{
				rs.close();
				return true;
			}		
			
	}

	
Ma in sql devo creare una tabella con campi: nome, cognome, email, password, NumeroTelefonico, DataDiNascita giusto? solo che i se voglio fare la registrazione riempio i campi dell'interfaccia ma non si memorizzano nella tabella sql potete aiutarmi a capire perchè?

4 Risposte

  • Re: Java swing e sql

    saraciao ha scritto:


    Ma in sql devo creare una tabella con campi: nome, cognome, email, password, NumeroTelefonico, DataDiNascita giusto?
    Ovviamente, nel database la tabella deve esistere e deve avere la struttura che ci si aspetta.
    solo che i se voglio fare la registrazione riempio i campi dell'interfaccia ma non si memorizzano nella tabella sql potete aiutarmi a capire perchè?
    Senza vedere il codice che richiama il metodo creaUtente(), non si può dire molto.
    L'unico suggerimento è verificare se vi sono eccezioni sollevate dall'applicazione (anche qui: non si sa come tu le abbia trattate).

    Per quanto riguarda il codice del metodo creaUtente() non rilevo nulla di formalmente errato: certo, avrei trattato in modo diverso la chiusura degli statement, dei ResultSet e della connessione sia in quel metodo che in effettua_accesso(), ma a parte questo non ci vedo errori.
  • Re: Java swing e sql

    LeleFT ha scritto:


    saraciao ha scritto:


    Ma in sql devo creare una tabella con campi: nome, cognome, email, password, NumeroTelefonico, DataDiNascita giusto?
    Ovviamente, nel database la tabella deve esistere e deve avere la struttura che ci si aspetta.
    solo che i se voglio fare la registrazione riempio i campi dell'interfaccia ma non si memorizzano nella tabella sql potete aiutarmi a capire perchè?
    Senza vedere il codice che richiama il metodo creaUtente(), non si può dire molto.
    L'unico suggerimento è verificare se vi sono eccezioni sollevate dall'applicazione (anche qui: non si sa come tu le abbia trattate).

    Per quanto riguarda il codice del metodo creaUtente() non rilevo nulla di formalmente errato: certo, avrei trattato in modo diverso la chiusura degli statement, dei ResultSet e della connessione sia in quel metodo che in effettua_accesso(), ma a parte questo non ci vedo errori.
    Grazie per avermi risposto...si in effetti, questo è il codice che ho inserito nel controller che richiama creaUtente:
    	public void creaUtente(Utente utente) 
    	{
    		if(inputVuoto(utente)==false){
    			{
    				try {
    					if(DaoUtente.creaUtente(utente))
    					{
    						VisualizzazioneErrore("Iscrizione Effettuata con successo");
    					}
    					else
    					{
    						VisualizzazioneErrore("Utente già presente");
    					}
    				} catch (SQLException e) {
    					VisualizzazioneErrore(e.getMessage()	);
    				}
    				catch(Exception e)
    				{
    					VisualizzazioneErrore(e.getMessage());
    				}
    			}
    		}
    		else
    		{
    			VisualizzazioneErrore("alcuni campi sono vuoti");
    		}
    	}
    nel database io ho fatto una semplice tabella con tutti i campi, così: ma non so se è corretta o meno..forse è la tabella che è fatta male
  • Re: Java swing e sql

    saraciao ha scritto:


    Grazie per avermi risposto...si in effetti, questo è il codice che ho inserito nel controller che richiama creaUtente:
    A prima vista sembra "corretto" a parte l'uso del metodo VisualizzaErrore() anche per segnalare che tutto è andato a buon fine.

    Per quanto riguarda la gestione delle eccezioni, almeno in fase di sviluppo, sarebbe bene non "castrare" le eccezioni: tu stai facendo solo visualizzare l'eventuale messaggio di errore, che nel 90% dei casi non è sufficiente a capire COSA accade e, soprattutto, DOVE accade. Per questo è bene sempre stampare lo stackTrace() dell'eccezione: questo, oltre, al messaggio, ti dice anche la riga esatta in cui si è scatenato l'errore e tutta la catena di chiamate che hanno portato a quella riga. Insomma: è uno strumento utile allo sviluppatore.
    nel database io ho fatto una semplice tabella con tutti i campi, così:
    ma non so se è corretta o meno..forse è la tabella che è fatta male
    E questo non lo possiamo sapere noi: nel senso, non hai specificato che tipo di database stai usando. A prima vista dall'immagine pare corretta, ma chi lo sa?
    Potrebbero esserci altre concause: stai usando lo stesso database? Perchè se, per esempio, stai usando un database in-memory è molto probabile che la tua applicazione ne usi uno "nuovo e pulito" ad ogni avvio e che tu stia guardando un'altra istanza, che non viene usata dall'applicazione. Oppure c'è di mezzo la rete... boh... ci possono essere mille mila cose.
  • Re: Java swing e sql

    LeleFT ha scritto:


    saraciao ha scritto:


    Grazie per avermi risposto...si in effetti, questo è il codice che ho inserito nel controller che richiama creaUtente:
    A prima vista sembra "corretto" a parte l'uso del metodo VisualizzaErrore() anche per segnalare che tutto è andato a buon fine.

    Per quanto riguarda la gestione delle eccezioni, almeno in fase di sviluppo, sarebbe bene non "castrare" le eccezioni: tu stai facendo solo visualizzare l'eventuale messaggio di errore, che nel 90% dei casi non è sufficiente a capire COSA accade e, soprattutto, DOVE accade. Per questo è bene sempre stampare lo stackTrace() dell'eccezione: questo, oltre, al messaggio, ti dice anche la riga esatta in cui si è scatenato l'errore e tutta la catena di chiamate che hanno portato a quella riga. Insomma: è uno strumento utile allo sviluppatore.
    nel database io ho fatto una semplice tabella con tutti i campi, così:
    ma non so se è corretta o meno..forse è la tabella che è fatta male
    E questo non lo possiamo sapere noi: nel senso, non hai specificato che tipo di database stai usando. A prima vista dall'immagine pare corretta, ma chi lo sa?
    Potrebbero esserci altre concause: stai usando lo stesso database? Perchè se, per esempio, stai usando un database in-memory è molto probabile che la tua applicazione ne usi uno "nuovo e pulito" ad ogni avvio e che tu stia guardando un'altra istanza, che non viene usata dall'applicazione. Oppure c'è di mezzo la rete... boh... ci possono essere mille mila cose.
    ah ma visualizzazioneErrore() e una dialog con panel dinamico che in base all'errore da la dialog con stringa relativa all'errore...il database che sto usando è pgAdmin 4
Devi accedere o registrarti per scrivere nel forum
4 risposte