簡體   English   中英

將Null值分配給DataTable中的Integer列

[英]Assign Null value to the Integer Column in the DataTable

我有一個帶有Integer DataType的One ColumnName“CustomerID”的數據表。 動態地我想向DataTable添加行。 為此,我創建了一個DataRow對象,如:

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

但是如果TextBox包含空字符串,則會拋出錯誤。 在這種情況下,我想將Null值分配給CustomerID。 這該怎么做?

空/空字符串的格式錯誤; 你需要檢測那個場景並補償:

    DR["CustomerID"] = string.IsNullOrWhiteSpace(text)
        ? DBNull.Value : (object)Convert.ToInt32(text);
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;
}

你可以這樣做:

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

首先,當然,需要在DB中將字段設置為可空。

然后,將其設置為DBNull.Value

你需要先檢查一下

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

如果不允許將null插入DR["CustomerID"] ,則可以使用(int?)null如下所示:

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

你可以使用DBNull。

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

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

如果將Integer變量聲明為int? 它由C#編譯器自動裝箱,您可以為該變量賦值null。 例如:

int? custID = null;

我希望有所幫助

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM