I tipi Nullable possono essere utilizzati in VB.NET? In tal caso, è possibile avere un numero intero Nullable che posso utilizzare con un campo che accetta NULL in SQL Server? Esempi sarebbero apprezzati.Tipi Nullable in VB.NET?
risposta
Non è possibile assegnare Null
, Nothing
o DBNull
a un numero intero in VB. È possibile possibile utilizzare uno Nullable(Of Integer)
invece di farlo, oppure inserire il valore intero in un Object
(che può essere Nothing
).
I numeri interi (System.Int32
ecc.) In .NET non sono direttamente annullabili; tuttavia, c'è Nullable-of-T
che ti consente di creare qualsiasi valore nullable-ish. Si noti che potrebbe essere necessario controllare il database con DBNull
anziché con lo null
/Nothing
.
Quindi sì, si può fare qualcosa di molto simile.
No. Dovrai modificare l'inserimento o aggiornare la query per non aggiungere (o aggiornare) quel valore per ottenere un valore null nel database.
VB.Net ha tipi nullable, possono essere dichiarati nei seguenti due modi diversi.
Dim iNullable As Integer?
o
Dim iNullable As Nullable(Of Integer)
In realtà ci sono [3 modi] (https://msdn.microsoft.com/en-us/library/ms235245 .aspx): Dim iNullable? come numero intero –
In un certo numero di casi Nothing
otterrà convertito al valore di default. Per utilizzare Nothing
nello stesso modo in cui si utilizza null
è necessario eseguire il cast sul tipo nullable corretto.
Dim str As String
Dim int As Nullable(Of Integer) ' or use As Integer?
Dim reader As SqlDataReader
Dim colA As Integer = reader.GetOrdinal("colA")
Dim colB As Integer = reader.GetOrdinal("colB")
str = If(reader.IsDBNull(colA), DirectCast(Nothing, String), reader.GetString(colA))
int = If(reader.IsDBNull(colB), DirectCast(Nothing, Nullable(Of Integer)), reader.GetInt32(colB))
unico modo che conosco per entrare NULL di in db da codice client (come richiesto nei commenti qui sotto questione) è quello di utilizzare i valori di default in SQL uguale a null.
Quindi, in stored procedure di aggiornamento/inserimento si può usare qualcosa di simile a:
create proc dbo.UpdateSomeTable
@Id int,
@Status bit = NULL
as
begin
update dbo.SomeTable
set Status = @Status
where Id = @Id
end
e da qualche parte nel codice
Dim pars As List(Of SqlParameter) = New List(Of SqlParameter)
With pars
.Add(New SqlParameter("@Id", LogbookNoteId))
If Flag Then
.Add(New SqlParameter("@Status", Flag))
End If
End With
ExecuteNonQuery("dbo.UpdateSomeTable", pars, CommandType.StoredProcedure)
- 1. Come confrontare i tipi nullable?
- 2. Cronologia della sintassi VB.NET Nullable
- 3. Esiste un bool nullable in vb.net
- 4. Java consente tipi nullable?
- 5. Confronto di tipi in VB.NET
- 6. complessi Tipi di Nullable Valori
- 7. Unboxing tipi nullable - soluzione alternativa?
- 8. Restituzione tipi di stringhe nullable
- 9. Tipi variabili Nullable - .valore membro
- 10. L'operatore + = con i tipi nullable in C#
- 11. Quali tipi di dati C# possono essere tipi nullable?
- 12. Strano comportamento dei tipi Enum nullable
- 13. VB.NET vs C#: tipi anonimi e intellisense
- 14. Come utilizzare i tipi Nullable in C++/cli?
- 15. Perché non dovrei usare sempre i tipi nullable in C#
- 16. Problemi con tipi nullable in una funzione LINQ
- 17. Dove sono memorizzati i tipi nullable in memoria?
- 18. Quando si dovrebbero usare i tipi nullable in C#?
- 19. Confronta i tipi nullable in Linq a Sql
- 20. Codice efficiente: tipi di dati short vs integer in VB.Net
- 21. Il compilatore C# sta ottimizzando i tipi nullable?
- 22. proprietà Nullable vs. variabili locali Nullable
- 23. Problemi con i tipi Nullable, DBNulls e Righe dati
- 24. modello ReSharper per rilevare l'aritmetica con i tipi nullable
- 25. F #: perché i tipi di opzione non sono compatibili con i tipi nullable?
- 26. Colonna Nullable Int in DataSet
- 27. Generics in VB.NET
- 28. in VB.NET
- 29. Valori Nullable in C++
- 30. ? (nullable) operatore in C#
infatti, è possibile assegnare Niente da un numero intero in VB.NET: 'Dim a As Integer = Nothing' Ma dopo, il seguente è vero: ' a = 0' – Jochen