web-dev-qa-db-ja.com

DataTableの整数列にNull値を割り当てます

Integer DataTypeのColumnName "CustomerID"が1つあるデータテーブルがあります。動的にDataTableに行を追加します。そのために、次のようなDataRowオブジェクトを1つ作成しました。

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

ただし、TextBoxに空の文字列が含まれている場合、エラーがスローされます。その場合、CustomerIDにNull値を割り当てます。これを行う方法?

18
thevan

Null /空の文字列の形式が間違っています。そのシナリオを検出して補正する必要があります。

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

あなたはそのようにすることができます:

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

もちろん、まず最初に、フィールドをDBでNULL可能に設定する必要があります。

そして、それをDBNull.Valueに設定します

2
roberkules

最初に確認する必要があります

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

DBNullを使用できます。

DR["CustomerID"] = (TextBox.Text.Length == 0) ? Convert.ToInt32(TextBox1.Text) : DBNull.Value;
1
Jim
 if (TextBox1.Text.Trim() == String.Empty)
    {
        DR["CustomerID"] = null;
    }
    else
    {
        DR["CustomerID"] = Convert.ToInt32(TextBox1.Text);
    }
1
Muhammad Akhtar
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
Dennis Traub

整数変数をintとして宣言すると? C#コンパイラによって自動的にボックス化され、その変数にnullを割り当てることができます。例えば:

int? custID = null;

それがお役に立てば幸いです

1
David

nullDR["CustomerID"]に挿入できない場合、次のように(int?)nullを使用できます。

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