A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

本帖最后由 淡忘回忆 于 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

评分

参与人数 1技术分 +1 收起 理由
茹化肖 + 1

查看全部评分

6 个回复

倒序浏览
报错的图片好像看不清吧,错误是: throw new global::System.Data.StrongTypingException("表“DATE”中列“Time”的值为 DBNull。", e);
回复 使用道具 举报
DATETableAdapter这个是个什么类?
adapter.GetDataByID(1).Single().Time这个定义的返回值是什么?
回复 使用道具 举报
段朝骞 发表于 2013-9-27 00:23
DATETableAdapter这个是个什么类?
adapter.GetDataByID(1).Single().Time这个定义的返回值是什么? ...

这个已经很明显了,是个强类型的adapter
回复 使用道具 举报
datetime值类型没有NULL
回复 使用道具 举报
送你一条查询语句
SELECT ID, (case when Time IS null then '' else Time)Time FROM dbo.DATE where ID=@ID
把时间改变为字符类型在dateset里面就不报错了。拿去用吧,读取前进行一次判断就行了
回复 使用道具 举报
送你一条查询语句
SELECT ID, (case when Time IS null then '' else Time)Time FROM dbo.DATE where ID=@ID
把时间改变为字符类型在dateset里面就不报错了。拿去用吧,读取前进行一次判断就行了
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马