web-dev-qa-db-fra.com

Attribuer une valeur nulle à la colonne entière dans le DataTable

J'ai une table de données avec One ColumnName "CustomerID" avec Integer DataType. Dynamiquement, je veux ajouter des lignes au DataTable. Pour cela, j'avais créé un objet DataRow comme:

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

Mais si la TextBox contient une chaîne vide, elle renvoie l'erreur. Dans ce cas, je veux attribuer une valeur Null au CustomerID. Comment faire ça?

18
thevan

Une chaîne nulle/vide est dans le mauvais format; vous devez détecter ce scénario et compenser:

    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;

Mais vous devez également vérifier que la valeur est un entier valide:

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

vous pourriez le faire comme ça:

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

Tout d'abord, bien sûr, le champ doit être défini comme nullable dans la base de données.

Et puis, définissez-le sur DBNull.Value

2
roberkules

Vous devez d'abord vérifier

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

Vous pouvez utiliser 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

Si vous déclarez la variable Integer comme int? il est automatiquement encadré par le compilateur C # et vous pouvez attribuer null à cette variable. Par exemple:

int? custID = null;

J'espère que ça aide

1
David

Lorsque null ne peut pas être inséré dans DR["CustomerID"], vous pouvez utiliser (int?)null comme ceci:

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