2009-07-14 11 views
20

क्या वीबीएनईटी में निरर्थक प्रकार का उपयोग किया जा सकता है? यदि हां, तो क्या एक Nullable Integer होना संभव है जिसे मैं ऐसे क्षेत्र के साथ उपयोग कर सकता हूं जो SQL सर्वर में NULL स्वीकार करता है? उदाहरणों की सराहना की जाएगी।वीबीएनईटी में निरर्थक प्रकार?

उत्तर

34

आप वीबी में एक पूर्णांक में Null, Nothing या DBNull असाइन नहीं कर सकते हैं। आप इसे पूरा करने के बजाय Nullable(Of Integer) का उपयोग कर सकते हैं, या Object में पूर्णांक मान बॉक्स कर सकते हैं (जो Nothing हो सकता है)।

+2

वास्तव में, आप VB.NET में एक पूर्णांक के लिए कुछ भी नहीं प्रदान कर सकते हैं:

तो अद्यतन/सम्मिलित संग्रहीत प्रक्रिया में आप की तरह कुछ का उपयोग कर सकते 'एक इंटीजर = कुछ भी नहीं' लेकिन उसके बाद, निम्नलिखित सत्य है: 'a = 0' – Jochen

7

.NET में इंटेजर्स (System.Int32 आदि) सीधे नहीं हैं; हालांकि, Nullable-of-T है जो आपको किसी भी मूल्य-प्रकार को शून्य-आइश बनाने की अनुमति देता है। ध्यान दें कि आपको के विरुद्ध null/Nothing के बजाय डेटाबेस को जांचना पड़ सकता है।

तो हाँ, आप कुछ बहुत समान कर सकते हैं।

1

नहीं। डेटाबेस में शून्य पाने के लिए आपको उस मान को जोड़ने (या अपडेट) करने के लिए सम्मिलित या अद्यतन क्वेरी को संशोधित करना होगा।

43

वीबी.Net में शून्य प्रकार हैं, उन्हें निम्नलिखित दो अलग-अलग तरीकों से घोषित किया जा सकता है।

Dim iNullable As Integer? 

या

Dim iNullable As Nullable(Of Integer) 
+1

असल में [3 तरीके] हैं (https://msdn.microsoft.com/en-us/library/ms235245 .aspx): मंद iNullable? इंटीजर के रूप में –

3

मामलों Nothing की एक संख्या में डिफ़ॉल्ट मान के लिए परिवर्तित कर दिया जाएगा। Nothing का उपयोग करने के लिए उसी तरह आप null का उपयोग करेंगे, आपको इसे सही शून्य प्रकार में डालना होगा।

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)) 
1

केवल जिस तरह से मैं शून्य के प्रवेश करने के लिए ग्राहक कोड से डाटाबेस में पता (के रूप में सवाल नीचे टिप्पणी में पूछा) एसक्यूएल में डिफ़ॉल्ट मान 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) 
संबंधित मुद्दे