我从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);
答案 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
值。希望这会有所帮助。