---
title: "Spara NULL?"
type: "forum-thread"
url: "https://www.webforum.nu/amne/dotnet/172380-spara-null"
topic: ".NET"
topic_url: "https://www.webforum.nu/amne/dotnet"
author: "Travoni"
published: "2008-06-25T09:02:40.000Z"
updated: "2008-06-25T19:19:01.000Z"
replies: 5
views: 520
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/dotnet/172380-spara-null"
---

# Spara NULL?

## #1 — Travoni, 2008-06-25T09:02Z

Jag har en property (SId) och en parameter som skall hämta värdet. Men kruxet är att databasen skall "spara" ett null-värde om SId inte innehåller något och i mitt fall så sparas 0 \[En nolla\] i databasen.

```
       Public Property SId() As Integer
            Get
                If Not IsNothing(ViewState("SId")) Then Return CType(ViewState("SId"), Integer)
                Return Nothing
            End Get
            Set(ByVal value As Integer)
                ViewState("SId") = value
            End Set
        End Property

' Mer kod ...

command.Parameters.Add("?sId", MySqlDbType.Int32).Value = sId
```

Vad är fel?

Permalänk: https://www.webforum.nu/p/172380

## #2 — spango, 2008-06-25T09:29Z

Gör om SId till Nullable(Of Integer) istället för Integer? Integer är en value type och har således aldrig nullvärde.

Permalänk: https://www.webforum.nu/p/2119934

## #3 — Travoni, 2008-06-25T09:35Z

Härligt!
Visste inte att det fanns något som hette Nullable()

Permalänk: https://www.webforum.nu/p/2119936

## #4 — Travoni, 2008-06-25T10:56Z

... följdfråga.

Eftersom att den fetmarkerade raden kan vara DBNull så funkar det inte med Integer. 
Om jag kör med rad 1, så får jag typcastingfel.
Rad 2 fungerar med det känns lite fel...

```
Rad 1
Dim ParentId As Nullable(Of Integer) = [B]DataBinder.Eval(e.Item.DataItem, "ParentId")[/B] 

Rad 2
Dim ParentId As Object = DataBinder.Eval(e.Item.DataItem, "ParentId")
```

Permalänk: https://www.webforum.nu/p/2119951

## #5 — spango, 2008-06-25T11:34Z

Ja, Nullable(Of Integer) är en helt annan datastruktur än Integer, så det är förklarligt att det inte går att casta om Eval returnerar en boxad Integer. (Nullable är bara en generisk struct som är lite fiffigt uppbyggd, kolla dokumentationen.) Jag har dålig pejl på hur DataBinder.Eval funkar, men kan du inte göra om ParentId till Nullable också? Annars får du göra nåt i stil med detta (som en övning får du det i C#):

```
public static Nullable<T> EvalNullable<T>(object container, string expression) where T : struct {
    object value = DataBinder.Eval(container, expression);
    if (value == null) return null;
    else return new Nullable<T>((T)value);
}
```

Permalänk: https://www.webforum.nu/p/2119959

## #6 — Travoni, 2008-06-25T19:19Z

Oki, tack vad bussigt:

```
Public Shared Function EvalNullable(Of T As Structure)(ByVal container As Object, ByVal expression As String) As Nullable(Of T) 
    Dim value As Object = DataBinder.Eval(container, expression) 
    If value Is Nothing Then 
        Return Nothing 
    Else 
        Return New Nullable(Of T)(DirectCast(value, T)) 
    End If 
End Function
```

 Nåt sånt hära kanske då.

Permalänk: https://www.webforum.nu/p/2120035

---

Tråden på webben: https://www.webforum.nu/amne/dotnet/172380-spara-null
