黑马程序员技术交流社区

标题: 求教个强类型DataSet从数据库中取空时间类型的问题 [打印本页]

作者: 淡忘回忆    时间: 2013-9-26 19:28
标题: 求教个强类型DataSet从数据库中取空时间类型的问题
本帖最后由 淡忘回忆 于 2013-10-11 19:03 编辑

突然想起来以前做项目遇到的一个问题,一直没有解决,在这里希望哪位同学帮解决一下,在数据库中定义一个可空的时间类型,用强类型取会报错,具体说起来有点麻烦,我截图吧
这个是数据库中数据。

数据集中查询为:SELECT ID, Time FROM dbo.DATE where ID=@ID

测试代码为:
class Program
    {
        static void Main(string[] args)
        {
            DATETableAdapter adapter = new DATETableAdapter();
            object date = adapter.GetDataByID(1).Single().Time;
        }
    }
下面是报错的图片:



JLJ$JO%RW]3)`MLWVE_UJS1.jpg (54.39 KB, 下载次数: 251)

JLJ$JO%RW]3)`MLWVE_UJS1.jpg

作者: 淡忘回忆    时间: 2013-9-26 19:29
报错的图片好像看不清吧,错误是: throw new global::System.Data.StrongTypingException("表“DATE”中列“Time”的值为 DBNull。", e);
作者: 段朝骞    时间: 2013-9-27 00:23
DATETableAdapter这个是个什么类?
adapter.GetDataByID(1).Single().Time这个定义的返回值是什么?
作者: 淡忘回忆    时间: 2013-9-27 01:02
段朝骞 发表于 2013-9-27 00:23
DATETableAdapter这个是个什么类?
adapter.GetDataByID(1).Single().Time这个定义的返回值是什么? ...

这个已经很明显了,是个强类型的adapter
作者: Liu阳    时间: 2013-10-9 15:12
datetime值类型没有NULL
作者: 祐掱緣    时间: 2013-10-10 16:12
送你一条查询语句
SELECT ID, (case when Time IS null then '' else Time)Time FROM dbo.DATE where ID=@ID
把时间改变为字符类型在dateset里面就不报错了。拿去用吧,读取前进行一次判断就行了
作者: 祐掱緣    时间: 2013-10-10 16:12
送你一条查询语句
SELECT ID, (case when Time IS null then '' else Time)Time FROM dbo.DATE where ID=@ID
把时间改变为字符类型在dateset里面就不报错了。拿去用吧,读取前进行一次判断就行了




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