C# Base V3

25.01.2021

Come anticipato in passato, questo post riguarderà non solo C# ma anche una parte legata ai Database o più semplicemente DB.

Come primissima cosa andiamo a definire l'estetica della nostra pagina di "login", in cui andremo a registrare prima l'utente (poichè il DB parte vuoto e con i soli due campi "username" e "psw") e successivamente ad autentificarlo tramite il pulsante "login". Ovviamente dobbiamo fare in modo, come abbiamo visto nei post precedenti, che la nostra schermata di login sia effettivamente la prima schermata visualizzata.

La schermata da me creata è la seguente:

Fatto questo, dobbiamo come prima cosa definire dei controlli molto basici ovvero, per la registrazione sia "nome utente" che "password" devono essere riempiti; semplicemente basta definire un costrutto if-else all'interno dell'evento "CLICK" del pulsante "registrati" :

if (username=="" || password=="")

{

System.Windows.MessageBox.Show("Inserire entrambi i campi");

}

else

{

//registrazione utente//

}

La scrittura "||" è un operatore logico chiamato OR, quindi se anche sola una delle due condizione è vera, il codice entrerà dentro l'IF, altrimenti andrà nell' ELSE.

Siccome man mano che andiamo avanti con i "tutorial" cerchiamo di rendere il tutto più ordinato possibile, questa volta non scriveremo la parte di codice che registra direttamente nell' evento Click del pulsante, ma andremo a creare un'altra classe. Quindi premendo tasto destro del mouse a lato destro dove ci sono tutti gli elementi del progetto andiamo a selezionare "aggiungi->classe" e la chiamiamo per esempio "connessioneDB".

Ora definiamoci l'oggetto "connessioneDB" nell' evento del bottone "registrati":

Connessionedb conn=new Connessionedb();

Ora prima di procedere ad inserire il codice nell' ELSE che abbiamo definito prima, andiamo all'interno della nostra classe "connessionedb" e progettiamo le query per l'inserimento dell' utente.

Vi lascio qui sotto il codice che passo passo andremo ad analizzare.

Librerie da usare: 

using System;

using System.Data;

using System.Data.SqlClient;

Il primo Step è quello di creare un metodo chiamato per esempio "registrazione" in cui andiamo ad inserire nelle parentesi del metodo le variabili che poi verranno passate e che dopo spiegheremo meglio, in ogni caso definiamo le variabili "user" e "psw".


Il prossimo passo è creare un costrutto TRY-CATCH in cui inseriremo nel "try" tutta la parte di connessione e operazione sul DB e nel "catch" un comando nel caso ci fosse un errore. Ora dichiariamo la nostra stringa di connessione al DB, per trovarla bisogna, su Visual Studio, andare nella TAB "visualizza->Esplora oggetti SQL->SQL Server " e andare a cliccare sul proprio DB creato e copiare la "stringa di connessione" presente nelle proprietà del database.

Fatto questo creiamo una stringa "conn" che sarà uguale alla nostra stringa di connessione con anteposta la @.

Le seguenti 4 righe di codice definiscono gli oggetti per la connessione al Database (alla quale sarà passata la stringa di connessione "conn") e per i comandi che saranno fatti sullo stesso.

Ora apriamo la connessione attraverso la linea di codice "sqlconnection.open()" e scriviamo il primo controllo che deve essere effettuato, ovvero quello per definire se l'utente già esiste per evitare dati ridondanti nel DB.

In sostanza andiamo a contare ("Select Count") quanti username ci sono con quell'username e con quella password e dopo aver fatto ciò con le ultime due righe andiamo ad interrompere i comandi ed a chiudere la connessione al DB.

(l'username è una chiave primaria nel nostro caso e quindi non avremo mai duplicati di username).

Il controllo successivo definisce se inserire o meno l'utente in base al numero di righe (rowcount) trovate (se 0 inserisce altrimenti l'utente esiste già).

Nel catch invece inseriamo un messaggio in caso di errore.

Se noi eseguissimo ora il codice senza unire connessioneDB con l'evento CLICK del pulsante "registrati" potremmo notare che l'utente non verrà mai registrato, questo perchè non passiamo alla nostra classe e al metodo il valore delle variabili che ci servono, ovvero username e password.

All'interno dell'else che avevamo ad inizio post dobbiamo andare a definire questa linea di codice: 

In sostanza richiamiamo l'oggetto "conn" (connessioneDB) e il suo metodo "registrazione" e nella parentesi gli passiamo le variabili che ci servono e su cui andiamo a lavorare, quindi utente e password. In questo modo quando eseguirà quella linea di codice passerà i valori delle variabili a conn.registrazione .

Se tutto funzionerà correttamente inserendo i due campi e premendo su "registrati" dovrebbe inserire nella tabella creata i dati. 

Per il tasto "login" la struttura logica è simile.

Di seguito il metodo da creare in ConnessioneDB.

L'unica cosa che cambia come si nota è che questa volta il metodo restituisce un interno (public INT login (....)).  Infatti il valore intero che ritorna è la variabile "supporto" che restituisce 0 se non ha trovato l'utente e 1 se invece esiste.

Di seguito la parte di codice in "Login_Click"

Anche qui la cosa che cambia è sostanzialmente la variabile "count" che ha il compito di assumere il valore ritornante dal metodo creato in ConnessioneDB (0 o 1).

Internamente all' IF andremo in futuro a sostituire quel messaggio con un'altra pagina, ora è giusto per verificare se il tutto funziona correttamente.

Una precisazione da fare sulle password è che non potrebbero per regolamento essere salvate in chiaro ma sempre criptate, logicamente però essendo basi di C# non ritengo sia il momento di parlare già di criptare/decriptare dei dati, sarà una cosa che vedremo più in là.

Come al solito per ogni domanda, dubbio o critica costruttiva vi invito a scrivermi presso i miei contatti presenti sul sito.

 

© 2020 CV-BLOG di Patrick Montagnoli. Tutti i diritti riservati.
Creato con Webnode
Crea il tuo sito web gratis! Questo sito è stato creato con Webnode. Crea il tuo sito gratuito oggi stesso! Inizia