在数据库中,NULL表示不知道,空表示没有。不一样。
代码中DBNull.Value表示数据库中的NULL
为了避免SQL的注入我们会利用参数化
cmd.Parameters.Add(new SqlParameter("@name", name));
如果name的值为null,那么将会报错,因为SqlParameter中第二个参数如果为null,则表示没有提供参数。
所以我们在往数据库中插值的时候
public static object ToDbValue(object value)
{
if (value == null)
{
return DBNull.Value;
}
else
{
return value;
}
}
如果值为null就要转为DBNull.Value
同样的,如果是从数据库中读取,则:
public static object FromDbValue(object value)
{
if (value == DBNull.Value)
{
return null;
}
else
{
return value;
}
}
也就是说如果数据库中是NULL的话,到了代码里是DBNull.Value,再转一下就好了。
当你从数据库中读取到DataSet的时候,得到DataTable,然后到每一列column
其中有:
column.AllowDBNull 是否允许为null
column.DataType.IsValueType 是否是值类型
|