2009-09-22 17 views
8

मैंने अपने .NET ऐप में दृढ़ता से टाइप किया गया डेटासेट (MyDataSet) बनाया है। सादगी के लिए, हम कहेंगे कि इसमें एक डेटाटेबल (MyDataTable) है, जिसमें एक कॉलम (MyCol) है। MyCol की डेटाटाइप संपत्ति "System.Int32" पर सेट है, और इसकी AllowDBNull प्रॉपर्टी "सत्य" पर सेट है।मैं अपने दृढ़ टाइप किए गए डेटासेट में मूल्य के रूप में डीबीएनयूएल को कैसे शामिल कर सकता हूं?

मैं मैन्युअल रूप से एक नई पंक्ति बनाना चाहता हूं, और इसे इस डेटासेट में जोड़ना चाहता हूं। मैं किसी समस्या के बिना पंक्ति बना देता हूं, जैसे कुछ:

MyDataSet.MyDataTableRow myRow = MySimpleDataSet.MyDataTable.NewItemRow(); 

ठीक है। हालांकि, जब मैं DBNull के लिए मूल्य सेट करने का प्रयास:

myRow.MyCol = DBNull.Value; 

मुझे बताया गया हूँ कि मैं यह नहीं कर सकते ... यह है कि यह किसी पूर्णांक पर कि डाली नहीं कर सकता। यह समझ में आता है, एक तरह से, क्योंकि मैंने इसे एक int होने के लिए परिभाषित किया है ... लेकिन फिर मैं वहां डीबीएन कैसे प्राप्त कर सकता हूं? क्या मुझे वहां डीबीएनयूएल नहीं मिलनी चाहिए? क्या यह नहीं है कि AllowDBNull संपत्ति के लिए क्या है?

मुझे स्पष्ट रूप से कुछ मौलिक याद आ रही है। क्या कोई यह समझाने में मदद कर सकता है कि यह क्या है?

संपादित करें: मैंने "int?" दर्ज करने का भी प्रयास किया डेटाटाइप के रूप में, लेकिन जब मैं इसे दर्ज करता हूं तो विजुअल स्टूडियो एक त्रुटि फेंकता है, कह रहा है कि "कॉलम को एक वैध डेटा टाइप की आवश्यकता है।"

+0

इससे मदद मिल सकती है: http://stackoverflow.com/questions/879095/nullable-int-column-in- डेटासेट –

उत्तर

13

आपके पास MyDataTableRow क्लास में एक जेनरेट विधि है: SetMyColNull()।

myRow.SetMyColNull(); 

आप भी कर सकते हैं:

myRow["MyCol"] = DBNull.Value; 

क्योंकि myRow["MyCol"] प्रकार के object

संपादित करें (प्रश्न ओपी से जोड़ा) है:

वहाँ भी उत्पन्न एक समकक्ष विधि है इस मान को वापस पढ़ने के लिए, IsMyColNull()।

+1

एगाड! मुझे यह कैसे याद आया/नहीं पता था? अति उत्कृष्ट! बहुत धन्यवाद! – Beska

0

int शून्य स्वीकार नहीं करता है, लेकिन int? (अतुलनीय संस्करण) करता है। मुझे लगता है कि आपको इसके बजाय उस डेटाटाइप की आवश्यकता है।

+1

दुर्भाग्यवश, यह काम नहीं करता है ...मैंने यह कोशिश की थी (मुझे इस सवाल में इसका जिक्र करना चाहिए ... मैं इसे ऐसा करने के लिए संपादित करूंगा।) जब मैं ऐसा करता हूं, तो यह एक विंडो खुलता है जो शिकायत करता है कि "कॉलम को एक वैध डेटा टाइप की आवश्यकता है।" – Beska

1

दो चीजें हैं।

डीबीएनयूएल को अनुमति देना डीबीएनयूएल को मूल्य निर्धारित करने में सक्षम होने से अलग सेटिंग है।

मैंने इसे सेट करने के लिए केवल डेटासेट एक्सएसडी इंटरफ़ेस का उपयोग किया है ... लेकिन मुझे केवल "AllowDBNull = true" सेट नहीं करना था, लेकिन मुझे "NullValue = (null)" भी सेट करना पड़ा। मूल रूप से "नलवेल्यू" को "(अपवाद)" पर सेट किया गया था। इसका मतलब यह था कि डेटासेट बायेंग स्वीकार करेगा।) (+) एड को शून्य के साथ, लेकिन आपको मान को मैन्युअल रूप से शून्य पर सेट करने की अनुमति नहीं देगा।

सुनिश्चित नहीं है कि यह आपकी समस्या है, लेकिन यह समान लगता है।

+0

यह केवल तारों के साथ काम करता है ... –

1

बस डेटासेट में डिज़ाइनर मोड पर जाएं और उस फ़ील्ड पर राइट क्लिक करें जिसे आप निरस्त करना चाहते हैं, और प्रॉपर्टी विंडो में गुणों का चयन करें, AllowDBNull को True और NullValue (NULL) पर सेट करें; यह मेरे लिए सही काम करता है! सबसे अच्छा संबंध है!

+0

यह केवल तारों के लिए काम करता है ... –

संबंधित मुद्दे

 संबंधित मुद्दे