2010-09-02 31 views
13

Ho una funzione di aggiornamento che aggiorna una tabella db del server sql attraverso un set di dati. Uno dei campi nella tabella è un numero intero e accetta valori nulli. Quindi, quando sto compilando la funzione di aggiornamento, ho bisogno di un modo per inserire un valore null quando la funzione vuole un numero intero.Crea un numero intero Null

ho cercato di fare in questo modo, ma _intDLocation = "" genera un'eccezione

Dim _dLocation As String = udDefaultLocationTextEdit.Text 
    Dim _intDLocation As Integer 
    If _dLocation <> "" Then 
     _intDLocation = Integer.Parse(udDefaultLocationTextEdit.Text) 
    Else 
     'NEED HELP HERE 
     _intDLocation = "" 
    End If 

risposta

29

I numeri interi non può essere impostato su NULL. Devi rendere il numero intero "nullable" aggiungendo un punto interrogativo dopo la parola Integer. Ora _intDLocation non è più un numero intero normale. È un'istanza di Nullable(Of Integer).

Dim _dLocation As String = udDefaultLocationTextEdit.Text 
Dim _intDLocation As Integer? 
If _dLocation <> "" Then 
    _intDLocation = Integer.Parse(udDefaultLocationTextEdit.Text) 
Else 
    _intDLocation = Nothing 
End If 

In seguito, se si desidera controllare per nulla è possibile utilizzare questo a portata di mano, la sintassi leggibile:

If _intDLocation.HasValue Then 
    DoSomething() 
End If 

In alcuni casi sarà necessario per accedere al valore come numero intero vero e proprio, non un intero nullable. Per questi casi, è sufficiente accedere

_intDLocation.Value 

Leggi tutto su Nullable here.

+2

+1 Totalmente dimenticato è possibile utilizzare 'Intero?'. Bello e conciso. –

+2

Per aggiungere un'altra risposta eccellente: _intDLocation sarà in realtà un'istanza di Nullable (Of Integer). Vedere la documentazione di Nullable qui: http://msdn.microsoft.com/en-us/library/b3h38hb0.aspx –

+1

Grazie, Etienne. Lo aggiungerò. – Larsenal

4

Prova questo:

Dim _dLocation As String = udDefaultLocationTextEdit.Text 

Dim _intDLocation As Nullable(Of Integer) 

If Not String.IsNullOrEmpty(_dLocation) Then 
    _intDLocation = Integer.Parse(_dLocation) 
End If 
0

La mia applicazione utilizza un sacco di etichette che iniziano in bianco (proprietà Text), ma hanno bisogno di essere incrementato come numeri interi, così ho fatto questa comoda funzione:

Public Shared Function Nullinator(ByVal CheckVal As String) As Integer 
    ' Receives a string and returns an integer (zero if Null or Empty or original value) 
    If String.IsNullOrEmpty(CheckVal) Then 
     Return 0 
    Else 
     Return CheckVal 
    End If 
End Function 

Questo è tipico esempio di come sarebbe essere utilizzato:

Dim Match_Innings As Integer = Nullinator(Me.TotalInnings.Text) 

Buon divertimento!

Problemi correlati