在处理数据的时候如果数据库里面的值为null,就会出现以上错误.
如:num = Convert.ToInt32(dtedit.Rows[k][i]),如果此时dtedit.Rows[k][i]的值为null就会出现这个错误.
解决办法:
1.if (dtedit.Rows[k][i] == DBNull.Value)
num = 0;
else
num = Convert.ToInt32(dtedit.Rows[k][i]);
2.在读取数据库数据时判断.如"Select IsNull(score,0) from score" 先把为null的数据表示为0
--------from:http://hi.baidu.com/fmhyht/blog/item/5edb5acf42090f3bf9dc61df.html
------------------
其实对于这个问题,还有一个办法,还是不错的:那就是用TryParse,
Convert.ToInt32 与 int.Parse 较为类似,实际上 Convert.ToInt32 内部调用了 int.Parse:
- Convert.ToInt32 参数为 null 时,返回 0;
- int.Parse 参数为 null 时,抛出异常。
-
- Convert.ToInt32 参数为 "" 时,抛出异常;
- int.Parse 参数为 "" 时,抛出异常。
-
在处理数据的时候如果数据库里面的值为null,就会出现以上错误.
如:num = Convert.ToInt32(dtedit.Rows[k][i]),如果此时dtedit.Rows[k][i]的值为null就会出现这个错误.
解决办法:
1.if (dtedit.Rows[k][i] == DBNull.Value)
num = 0;
else
num = Convert.ToInt32(dtedit.Rows[k][i]);
2.在读取数据库数据时判断.如"Select IsNull(score,0) from score" 先把为null的数据表示为0
--------from:http://hi.baidu.com/fmhyht/blog/item/5edb5acf42090f3bf9dc61df.html
------------------
其实对于这个问题,还有一个办法,还是不错的:那就是用TryParse,
Convert.ToInt32 与 int.Parse 较为类似,实际上 Convert.ToInt32 内部调用了 int.Parse:
- Convert.ToInt32 参数为 null 时,返回 0;
- int.Parse 参数为 null 时,抛出异常。
-
- Convert.ToInt32 参数为 "" 时,抛出异常;
- int.Parse 参数为 "" 时,抛出异常。
-
- Convert.ToInt32 可以转换的类型较多;
- int.Parse 只能转换数字类型的字符串。
int.TryParse 与 int.Parse 又较为类似,但它不会产生异常,转换成功返回 true,转换失败返回 false。最后一个参数为输出值,如果转换失败,输出值为 0。
public static int ParseInt(object obj)
{
int reInt = -1;
if (obj != null)
int.TryParse(obj.ToString(), out reInt);
return reInt;
}
- Convert.ToInt32 可以转换的类型较多;
- int.Parse 只能转换数字类型的字符串。
int.TryParse 与 int.Parse 又较为类似,但它不会产生异常,转换成功返回 true,转换失败返回 false。最后一个参数为输出值,如果转换失败,输出值为 0。
public static int ParseInt(object obj)
{
int reInt = -1;
if (obj != null)
int.TryParse(obj.ToString(), out reInt);
return reInt;
}