0

我正在从数据行插入一个值以访问数据库,如果行 [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

4 回答 4

0

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

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

 Number SNumber = row[1];

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

    if (!string.IsNullOrWhiteSpace(SNumber.ToString())) {
    [..]
    }
于 2013-10-22T12:15:16.057 回答
0

行值可能为空白或为空。因此,仅检查 null 是不够的,您必须检查两者是否为 null,然后 Number 数据类型不允许空字符串为空白。

也许你可以使用string.IsNullOrEmpty

尝试这个

if (!string.IsNullOrEmpty(row[1].ToString())
{
   // do your stuff
}
于 2013-10-22T12:16:31.657 回答
0

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

SNumber = "NULL"; 

是一个字符串。如果它是:

SNumber = NULL; 

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

int? num = null;

它可以容纳的问号点也是一个NULL值。希望这可以帮助。

于 2013-10-22T12:39:27.230 回答
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] 的值。

于 2013-10-22T12:27:09.520 回答