黑马程序员技术交流社区

标题: WPF之可空数据类型 [打印本页]

作者: xinchenglong    时间: 2013-8-24 17:53
标题: WPF之可空数据类型
通过学习WPF中的视频教程,第一次了解到可空数据类型。
可空数据类型如:引用类型、string,自己定义的类等。
不可空的数据类型:值类型等。
在程序中这样写就是错误的, int a=null;(错误)
nt?i=null;在不可为空的类型后加?然后就可以等于null了

虽然对可空数据类型有个初步了解,但是还不能完全理解,请各位看官解释一下,数据库中的null和这里的null又有什么区别呢?

作者: 追梦无悔    时间: 2013-8-24 17:58
数据库中的null相当于wpf中的" "(什么都没有),在数据库中" "(什么都没有)则在wpf中是null
作者: 彭家贰小姐    时间: 2013-8-26 06:59
在数据库中,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    是否是值类型

作者: xinchenglong    时间: 2013-8-26 14:07
哦,数据库中的空置原来是这样操作的啊!
作者: xinchenglong    时间: 2013-8-26 14:07
哦,数据库中的空置原来是这样操作的啊!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2