如何在c#中的Number字段中插入“NULL”

时间:2013-10-22 12:08:31

标签: c# ms-access-2007

我从datarow插入一个值来访问数据库,如果row [1]值为空,则会在条件表达式中抛出错误数据类型不匹配,如果值在那里则正确插入。我在这里失踪了什么。在访问中,column1的类型为Number。

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);

4 个答案:

答案 0 :(得分:0)

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

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

 Number SNumber = row[1];

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

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

答案 1 :(得分:0)

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

可以使用string.IsNullOrEmpty

试试这个

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

答案 2 :(得分:0)

您可以使用三元运算符替换所有代码:

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

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

答案 3 :(得分:0)

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

SNumber = "NULL"; 

字符串。如果是:

SNumber = NULL; 

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

int? num = null;

问号指出它还可以保存NULL值。希望这会有所帮助。