如何在 C# 的数字字段中插入“NULL”

本文关键字:插入 NULL 字段 数字 | 更新日期: 2023-09-27 18:36:33

>我正在从数据行插入一个值以访问数据库,如果行[1]值为空,则会抛出错误 条件表达式中的数据类型不匹配,如果值在那里,它会正确插入。 我在这里缺少什么。 在"访问"中,列 1 的类型为"数字"。

string SNumber = row[1].ToString();
if (SNumber.ToString() != null)
{
    if (SNumber .ToString() != "")
    {
        SNumber = row[1].ToString();
    }
    else
    {
        SNumber = "NULL";
        SNumber = DBNull.Value.ToString();
    }
}
insert into table1 (Column1) values (SNumber);

如何在 C# 的数字字段中插入“NULL”

行值可能为空或为空。因此,仅检查 null 是不够的,您必须检查两个 null,然后对于数字数据类型不允许空刺为空。

也许你可以使用string.IsNullOrEmpty

试试这个

if (!string.IsNullOrEmpty(row[1].ToString())
{
   // do your stuff
}

您可以将所有代码替换为三元运算符:

string query = "insert into table1 (Column1) values (" + 
        ((row[1] != null && row[1].ToString() != String.Empty) 
            ? row[1].ToString() 
            : null)
    + ") etc... etc...";

如果我正确理解你想要什么。 如果行 [1] 为空或空,则插入空。 否则插入行 [1] 的值。

好的,我想Column1是一个数值字段。然后,如果您尝试插入字符串,它将抛出错误,因为

SNumber = "NULL"; 

是一个字符串。如果是:

SNumber = NULL; 

那么这将是一个空值。但也许最好使用 Nullable int - Nullable type MSDN

int? num = null;

问号点,它也可以保存一个NULL值。希望这有帮助。

我想,如果 row[1] 为空,那么您也会收到异常。 如果 row[1] 可以返回一个可为空的数据类型(在您的问题中不清楚),那么也许您应该替换:

 string SNumber = row[1].ToString();

 Number SNumber = row[1];

然后将外部 if 语句替换为:

    if (!string.IsNullOrWhiteSpace(SNumber.ToString())) {
    [..]
    }