Gestione eccezione campo nullo in database access

di il
4 risposte

Gestione eccezione campo nullo in database access

Ciao a tutti, sto implementando un mio semplice programmino di gestione password, adesso volevo aggiungere la sezione per allegare un paio di immagini al relativo campo. Ho creato una Forma apposita e la mia esigenza è gestire il valore DBnull nel caso non fosse mai stata caricata l'immagine.

In sostanza, quando apro la Form va a leggere nel Database la Img1 e la Img2, se trova un percorso e il file esiste allora carica la foto, altrimenti ne mette una di default. Il problema è che non riesco a gestire il valore nullo nel database, sarà sicuramente sciocca come cosa però mi sono arenato un attimo.

 Dim lettoreid As OleDbDataReader
 Dim Identificativo As String = Home.tbID.Text
 myConnection.ConnectionString = connString
 myConnection.Open()
 Dim trova As String
 trova = "SELECT * From PWD WHERE ID =@ID"
 Dim trovatoid As OleDbCommand = New OleDbCommand(trova, myConnection)
 trovatoid.Parameters.AddWithValue("@ID", Identificativo)
 trovatoid.Parameters.AddWithValue("@Img1", Identificativo)
 trovatoid.Parameters.AddWithValue("@Img2", Identificativo)
 lettoreid = trovatoid.ExecuteReader
 If lettoreid.Read Then
     TBimg1.Text = lettoreid("Img1")
     TBimg2.Text = lettoreid("Img2")
     If TBimg1.Text <> "" Then
         PictureBox1.Image = My.Resources.ImgDefault
              Else
         PictureBox1.Load(lettoreid("Img1"))
     End If
     If TBimg2.Text <> "" Then
         PictureBox2.Image = My.Resources.ImgDefault
              Else
         PictureBox2.Load(lettoreid("Img2"))
     End If
 Else
     PictureBox1.Image = My.Resources.ImgDefault
     PictureBox2.Image = My.Resources.ImgDefault
 End If

L'errore è System.InvalidCastException: 'Cast non valido dal tipo 'DBNull' al tipo 'String'.' nel TBimg2.Text = lettoreid("Img2")

Grazie in anticipo 

4 Risposte

  • Re: Gestione eccezione campo nullo in database access

    Ok mi sono risposto da solo…. scusate…

     If lettoreid.Read Then
         If lettoreid("Img1").ToString = "" Then
             PictureBox1.Image = My.Resources.ImgDefault
         Else
             PictureBox1.Load(lettoreid("Img1"))
             TBimg1.Text = lettoreid("Img1")
         End If
         If lettoreid("Img2").ToString = "" Then
             PictureBox2.Image = My.Resources.ImgDefault
         Else
             PictureBox2.Load(lettoreid("Img2"))
             TBimg2.Text = lettoreid("Img2")
         End If
     Else
         PictureBox1.Image = My.Resources.ImgDefault
         PictureBox2.Image = My.Resources.ImgDefault
     End If

    ovviamente se non mettevo il .ToString non funzionava….

  • Re: Gestione eccezione campo nullo in database access

    In alternativa…

         If lettoreid("Img1").Equals(DBNull.Value) Then ...
  • Re: Gestione eccezione campo nullo in database access

    Oppure anche 

    If Convert.IsDBnull(lettoreid("Img1")) Then ...

    ma sinceramente preferisco la soluzione di grumpy che è più leggibile

  • Re: Gestione eccezione campo nullo in database access

    Grazie ad entrambi, si effettivamente oltre ad essere più leggibile, rispetto alla mia va proprio sul valore NULLO che come ricordate spesso è diverso da “” in quanto uno spazio non è interpretato come valore nullo ma genera comunque l'errore dopo.

    Grazie ad entrambi

Devi accedere o registrarti per scrivere nel forum
4 risposte