VB.NETでNullable型を使用できますか?もしそうなら、SQL ServerでNULLを受け入れるフィールドで使用できるNullable Integerを持つことが可能ですか?例が分かるだろう。VB.NETのNullable型?
答えて
VBの整数にNull
,Nothing
またはDBNull
を割り当てることはできません。 缶Nullable(Of Integer)
を使用するか、またはObject
の整数値(Nothing
)を使用してください。
.NETの整数(System.Int32
など)は直接nullableではありません。しかし、Nullable-of-T
があるので、値型のnullable-ishを作ることができます。 null
/Nothing
ではなく、DBNull
に対してデータベースをチェックする必要があります。
はい、非常に似たようなことができます。
いいえ。挿入または更新クエリを変更して、その値を追加(または更新)しないで、データベースにnullを取得する必要があります。
VB.Netにはnull可能な型がありますが、次の2通りの方法で宣言できます。例Nothing
の数で
Dim iNullable As Integer?
または
Dim iNullable As Nullable(Of Integer)
実際には[3つの方法]があります(https://msdn.microsoft.com/en-us/library/ms235245) .aspx):Dim iNullable?整数として –
デフォルト値に変換されます。 null
と同じ方法でNothing
を使用するには、正しいnull可能な型にキャストする必要があります。 (質問以下のコメントに尋ねたとして)NULLに等しいSQLのデフォルト値を使用することです
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))
唯一の方法は、私は、クライアントコードからDBにNULLのを入力して知っています。
ので、更新/挿入ストアドプロシージャに次のようなものを使用することができます
create proc dbo.UpdateSomeTable
@Id int,
@Status bit = NULL
as
begin
update dbo.SomeTable
set Status = @Status
where Id = @Id
end
をし、どこかのコードで
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)
実際には、あなたはVB.NETで整数に何を割り当てることはできません。 'Dim a As Integer = Nothing' その後、以下が成り立ちます。 ' a = 0' – Jochen