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?
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);
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;
}
vous pourriez le faire comme ça:
DR["CustomerID"] = string.IsNullOrEmpty(TextBox1.Text) ?
null : Convert.ToInt32(TextBox1.Text);
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
Vous devez d'abord vérifier
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
Vous pouvez utiliser 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);
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
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);