2011-06-15 24 views
18

'daki Tamsayı Sütunu için Boş değer atama Tamsayı DataType ile One ColumnName "CustomerID" ile bir veritabam var. Dinamik olarak DataTable'a satır eklemek istiyorum. Bunun için, ben gibi bir DataRow nesnesi yaratmıştı:DataTable

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

Ama TextBox boş dize içeriyorsa, bu hata atar. Bu durumda, NID değerini CustomerID'ye atamak istiyorum. Bu nasıl yapılır?

+0

@Marc neden oradan DataTable kullanarak ona bir şey tavsiye et? – mqpasta

+1

@Marc: Evet. DataTable'ı kullanıyorum. – thevan

cevap

25

Bir boş/boş dize biçimi yanlış; Eğer bu senaryoyu algılayıp telafi etmek gerekir:

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

Ama değer geçerli bir tamsayı olduğu da kontrol etmelisiniz:

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

Sen DBNull kullanabilirsiniz.

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

bunu böyle yapabilirdi: Herşeyden

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

Birincisi, elbette, tarla DB null olarak ayarlanması gerekir. Eğer int olarak Tamsayı değişken bildirirseniz

Ve sonra, 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

olarak ayarlayın? C# derleyici tarafından otomatik olarak kutlanır ve bu değişkene null atayabilirsiniz. Örneğin:

int? custID = null; 

ben Önce kontrol etmek gerektiğini

2

yardımcı olur umarım

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

, bunun yerine böyle (int?)null kullanabilirsiniz:

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