2011-06-15 12 views
18

में इंटीजर कॉलम में शून्य मान असाइन करें मेरे पास इंटीजर डेटा टाइप के साथ एक कॉलमनाम "ग्राहक आईडी" के साथ एक डाटाटेबल है। गतिशील रूप से मैं डेटाटेबल में पंक्तियां जोड़ना चाहता हूं। कि के लिए, मैं की तरह एक DataRow वस्तु बनाया था:डेटाटेबल

DataTable dt = new DataTable(); 
    DataRow DR = dt.NewRow(); 
    DR["CustomerID"] = Convert.ToInt32(TextBox1.Text); 

लेकिन अगर टेक्स्ट बॉक्स खाली स्ट्रिंग है, यह त्रुटि फेंकता है। उस स्थिति में, मैं ग्राहक आईडी को शून्य मान असाइन करना चाहता हूं। यह कैसे करना है?

+0

@Marc आप क्यों नहीं डेटाटेबल का उपयोग करके उसे कुछ सलाह दें? – mqpasta

+1

@Marc: हां। मैं डेटाटेबल का उपयोग कर Iam। – thevan

उत्तर

25

एक अशक्त/खाली स्ट्रिंग गलत प्रारूप में है; आप उस परिदृश्य का पता लगाने और क्षतिपूर्ति करने के लिए की आवश्यकता होगी:

DR["CustomerID"] = string.IsNullOrWhiteSpace(text) 
     ? DBNull.Value : (object)Convert.ToInt32(text); 
4
DR["CustomerID"] = !string.IsNullOrEmpty(TextBox1.Text) 
        ? Convert.ToInt32(TextBox1.Text) 
        : DBNull.Value; 

लेकिन क्या आप भी जांच करनी चाहिए कि मूल्य एक मान्य पूर्णांक है:

int value; 
if(int.TryParse(TextBox1.Text, out value)) 
{ 
    DR["CustomerID"] = value; 
} 
else 
{ 
    DR["CustomerID"] = DBNull.Value; 
} 
1

आप DBNull उपयोग कर सकते हैं।

DR["CustomerID"] = (TextBox.Text.Length == 0) ? Convert.ToInt32(TextBox1.Text) : DBNull.Value; 
1
if (TextBox1.Text.Trim() == String.Empty) 
    { 
     DR["CustomerID"] = null; 
    } 
    else 
    { 
     DR["CustomerID"] = Convert.ToInt32(TextBox1.Text); 
    } 
2

आपको लगता है कि जैसे कि यह कर सकता है:

सभी की
DR["CustomerID"] = string.IsNullOrEmpty(TextBox1.Text) ? 
    null : Convert.ToInt32(TextBox1.Text); 
2

सबसे पहले, निश्चित रूप से, क्षेत्र डीबी में नल के रूप में स्थापित किया जाना चाहिए।

और फिर, DBNull.Value

1
DataTable dt = new DataTable(); 
DataRow DR = dt.NewRow(); 

if (String.IsNullOrEmpty(TextBox1.Text)) 
    DR["CustomerID"] = DBNull.Value; 
else 
    DR["CustomerID"] = Convert.ToInt32(TextBox1.Text); 
1

के लिए सेट आप पूर्णांक के रूप में पूर्णांक चर घोषित है? यह स्वचालित रूप से सी # कंपाइलर द्वारा बॉक्स किया गया है और आप उस चर के लिए शून्य असाइन करने में सक्षम हैं। उदाहरण के लिए:

int? custID = null; 

मुझे आशा है कि

2

में मदद करता है आप पहली बार जांच करने की आवश्यकता

if (TextBox1.Text.Length > 0) 
{ 
    DR["CustomerID"] = Convert.ToInt32(TextBox1.Text); ; 
} 
else 
{ 
    DR["CustomerID"] = null; 
} 
2
Int32 Temp = 0; 
if !(Int32.TryParse(TextBox1.Text,Temp)) 
    DR["CustomerID"] = DBNull.Value 
else 
    DR["CustomerID"] = Temp 
1

nullDR["CustomerID"] में सम्मिलित करने के लिए अनुमति नहीं है, तो आप (int?)null इस्तेमाल कर सकते हैं बजाय इस तरह:

DR["CustomerID"] = string.IsNullOrEmpty(TextBox1.Text) ? 
(int?) null : Convert.ToInt32(TextBox1.Text);