Visualizzazione dei risultati da 1 a 10 su 10
  1. #1

    [VB.NET] gestire gli oggetti nulli

    Ciao,
    ho un problema nel gestire gli oggetti nulli in VB.NET.
    Devo creare un login x un sito; faccio inserire username e password all'utente, verifico che i campi non siano vuoti e infine controllo nella base dati se esiste l'utente con lo username digitato.
    Il metodo nella classe Utente che effettua la ricerca e' il seguente :

    Function cercaUtentePerUsername(ByVal u As String) As Utente
    Dim utente As Utente

    Dim conPubs As SqlConnection
    Dim cmdSelectUser As SqlCommand
    Dim dtrUser As SqlDataReader

    Dim stringaConnessione As String
    stringaConnessione = "Server=localhost; uid=sa; pwd=secret; database=pubs"
    conPubs = New SqlConnection(stringaConnessione)

    conPubs.Open()
    Dim query As String
    query = "select * from login where user=" + u
    cmdSelectUser = New SqlCommand(query, conPubs)
    dtrUser = cmdSelectUser.ExecuteReader()

    If dtrUser.Read() Then
    Dim usernameQuery As String
    Dim passwordQuery As String

    usernameQuery = dtrUser.GetString(0)
    passwordQuery = dtrUser.GetString(1)

    utente = New Utente
    utente.setUsername(usernameQuery)
    utente.setPassword(passwordQuery)
    End If

    conPubs.Close()

    Return utente
    End Function


    Se ho scritto bene l'algoritmo (non l'ho ancora testato), se non trova nessun utente con lo username digitato mi dovrebbe restituire un oggetto di tipo utente con i campi nulli.

    Nella sub btnInvia_Click vorrei poter scrivere:

    utente = utente.cercaUtentePerUsername(username)
    if utente = null then
    lblErrori.Text = "L'utente non esiste"+
    end if


    ..ma null non la riconosce..

    Come si fanno a gestire gli oggetti nulli in VB.NET?

  2. #2
    Utente di HTML.it L'avatar di Legnetto
    Registrato dal
    May 2002
    Messaggi
    1,419
    If IsDbNull(utente).....

    Ciao
    Legnetto

  3. #3
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    supponi di voler trovare un valore:
    select testo from campi where id=3

    ci sono 3 casi:

    1) per l'id=3 non ci sono record
    2) per l'id=3 c'è un record ma il campo testo è null
    3) per l'id=3 c'è il record ed il campo testo è una stringa

    utilizzando il metodo ExecuteScalar() di OledbCommand,

    j = Comando.ExecuteScalar(), ottieni

    1) j Is Nothing ---> true
    1) j Is DBNull.Value --> false

    2) j Is Nothing --> false
    2) j Is DBNull.Value --> true

    3) j Is Nothing --> false
    3) j Is DBNull.Value --> false

    non so :master: spero di non dimenticare null

    Pietro

  4. #4
    Utente di HTML.it
    Registrato dal
    Sep 2002
    Messaggi
    4,127
    al posto di null usare nothing, non si puo?

  5. #5
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da sms
    al posto di null usare nothing, non si puo?

    :master: in basic credo che sia necessario usare l'operatore Is se la variabile è di tipo riferimento, se il tipo è value, basta =

    :master:
    Pietro

  6. #6

    Re: [VB.NET] gestire gli oggetti nulli

    Dovrebbe essere più corretto scrivere:
    Function cercaUtentePerUsername(ByVal u As String) As Utente
    Dim utente As Utente =nothing
    Quindi, come ti hanno detto più volte, quando controlli se è esiste un utente:
    codice:
    if utente is nothing then ...
    Ciao
    AZ [Microsoft - .NET MVP]
    Mia Home page: http://ciclismo.sitiasp.it
    Asp.Net community: http://www.aspitalia.com
    Il mio blog: http://blogs.aspitalia.com/az

  7. #7
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Ne aprofitto per chiedere ad Andrea:

    questa funzione, in caso di errore, restituiresti null (nothing) o solleveresti una eccezione? :master:

    Pietro

  8. #8
    Assolutalemente il null(C#) o il nothing(VB.NET). L'exception deve essere eseguita in caso di errore non gestibile. Prendi in considerazione che l'eccezione è una procedura di lenta esecuzione, e compromette le prestazioni del tuo codice.

    Ciao
    AZ [Microsoft - .NET MVP]
    Mia Home page: http://ciclismo.sitiasp.it
    Asp.Net community: http://www.aspitalia.com
    Il mio blog: http://blogs.aspitalia.com/az

  9. #9
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da AndreaZani
    Assolutalemente il null(C#) o il nothing(VB.NET). L'exception deve essere eseguita in caso di errore non gestibile. Prendi in considerazione che l'eccezione è una procedura di lenta esecuzione, e compromette le prestazioni del tuo codice.

    Ciao
    Sono daccordo con te. Però ho letto in Letteratura pareri diametralmente opposti. E non è che siano novellini, ma ex programmatori Microsoft :master:

    Pietro

  10. #10
    Appunto... ex programmatori Microsoft

    Ciao
    AZ [Microsoft - .NET MVP]
    Mia Home page: http://ciclismo.sitiasp.it
    Asp.Net community: http://www.aspitalia.com
    Il mio blog: http://blogs.aspitalia.com/az

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.