Enumerazioni in VB.NET

di il
4 risposte

Enumerazioni in VB.NET

Salve, potreste aiutarmi a vedere se questo codice che ho impostato è corretto o se ha senso?

Innanzitutto vi spiego di cosa si tratta:
ho un database con una sola riga:e all'interno ci sono tre password,
ogni password accede a qualcosa;

in base alla password io stabilisco cosa bisogna fare.

io ho pensato di inserire in un form una textbox e un bottone
il codice l'ho impostato così:
Public Enum Livelli
master = 1
pluto
pippo
nonautenticato
End Enum
Public liv As Livelli
Public Function FindPassword(ByVal pass As String) As Livelli
Dim strConn As String = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\Documents and Settings\aaa\Desktop\Master\Master.mdb;"
Dim cn As New OleDbConnection(strConn)
Dim cm As New OleDbCommand()
Dim dt As OleDbDataReader
Dim da As New OleDbDataAdapter(cm)

cm.CommandText = "SELECT PSW1,PSW2,PSW3 FROM Anagrafica WHERE PSW1='" & pass & "'" & " OR PSW2 ='" & pass & "'" & " OR PSW3 =' " & pass & "' "
cm.Connection = cn
Try
cn.Open()

dt = cm.ExecuteReader()
If dt.Read() Then
If (pass = "master") Then
liv = CType([Enum].Parse(GetType(Livelli), dt.Item("PSW1")), Livelli)

End If
If (pass = "pluto") Then
liv = CType([Enum].Parse(GetType(Livelli), dt.Item("PSW2")), Livelli)


End If

If (pass = "pippo") Then
liv = CType([Enum].Parse(GetType(Livelli), dt.Item("PSW3")), Livelli)
End If

End If

Catch er As Exception
MsgBox(er.Message & Environment.NewLine & er.StackTrace)
cn.Close()
End Try


Return liv

End Function

A me funziona, ma volevo un giudizio da persone che con ogni probabilità lavorano conVB.net da una vita.
Vi sarei molto grato di un qualsiasi tipo di aiuto pensate possa essermi utile per migliorare il codice in questione e anche quello futuro.

4 Risposte

  • Re: Enumerazioni in VB.NET

    Non c'è nessuno che mi può aiutare?

    Volevo solo un suggerimento


    Grazie ancora
  • Re: Enumerazioni in VB.NET

    Da quanto ho capito questa funzione stabilisce se la password esiste, e se esiste, dove è contenuta...

    Io avrei fatto tre righe nel database con un id e la password:

    1 master
    2 pluto
    3 pippo

    e la query sarebbe stata "SELECT ID FROM ANAGRAFICA WHERE PASSWORD = pass"

    a quel punto l'ID coincide con la entry dell'enumerazione e puoi fare direttamente liv = ID, oppure per essere più tranquillo fai un select case ID e fai liv = enumerazione

    Per quanto riguarda il codice, hai dichiarato un OledbDataAdapter che non usi, dovresti chiudere il reader quando non ti serve più e dovresti chiudere la connessione prima del catch, oppure puoi fare:

    Try

    catch
    ....
    Finally
    dt.close
    cn.Close
    end try
  • Re: Enumerazioni in VB.NET

    Non posso fare come dici tu perchè le password sono su un unica riga

    ad esempio:

    Il db è cosi

    Nome,Cognome,Indirizzo PWS1,PWS2,PWS3,Titolo,Sede ect.
    E ogni password fa una cosa, mi spiehgo meglio

    la password1 entra in un posto,con la password2 entra in unaltra,ma può entrare anche la prima e con la terza si entra in un altro posto ancora e possono entrare sia la prima che la seconda.

    per quanto riguarda l'OLEDBDATAADAPTER l'avevo chiuso poi e anche i ltry poi l'ho gestita meglio
  • Re: Enumerazioni in VB.NET

    Se hai questa esigenza allora sei a posto così secondo me.
    Di solito io cerco sempre di far coincidere dei numeri dal database con le entry dell'enumerazione, in modo da non fare quel parsing dal testo al valore effettivo, però se hai questa esigenza va bene pure cosi.
Devi accedere o registrarti per scrivere nel forum
4 risposte