首页 新闻 搜索 专区 学院

关于dataTable的DBNull引起的异常

0
悬赏园豆:10 [已解决问题] 解决于 2015-11-09 17:31

我想要新建一个用户资料,这个用户资料还没有存在于users这个表,当我点击新建,在初始化页面的时候,在UserDataSet.Designer.cs页面抛出异常

“The value for column 'TelNumber' in table 'Users' is DBNull.”

我查看了UserDataSet.Designer.cs抛出异常的代码

 public string TelNumber
            {
                get
                {
                    try
                    {
                        return ((string)(this[this.tableUsers.TelNumberColumn]));
                    }
                    catch (global::System.InvalidCastException e)
                    {
                        throw new global::System.Data.StrongTypingException("The value for column \'TelNumber\' in table \'Users\' is DBNull.", e);
                    }
                }
                set
                {
                    this[this.tableUsers.TelNumberColumn] = value;
                }
            }

然后我修改为

 public string TelNumber
            {
                get
                {
                    if (this.IsTelNumberNull())
                    {
                        return null;
                    }
                    else
                    {
                        return ((string)(this[this.tableUsers.TelNumberColumn]));
                    }
                }
                set
                {
                    this[this.tableUsers.TelNumberColumn] = value;
                }
            }

这样子修改后就正常了,但是我完全不知道为什么

因为UserDataSet.Designer.cs的代码都是自动生成的,请问我这样子修改会出问题吗?能这样子修改吗?

rivahuang的主页 rivahuang | 初学一级 | 园豆:91
提问于:2015-11-09 11:22
< >
分享
最佳答案
0

应该没什么问题,但是你新建的时候为什么要去获取值?

收获园豆:10
稳稳的河 | 老鸟四级 |园豆:4216 | 2015-11-09 12:23

我不太明白你说的“新建的时候为什么要去获取值”

但是我是在已经存在的表中插入一列,然后为了方便测试,我又把这列赋值了,用sql

alter table 表名 add 列名 valuetype

update
表名 set 列名=value  

是不是我这样赋值才导致它会去获取值有什么不妥?

劳烦前辈赐教

rivahuang | 园豆:91 (初学一级) | 2015-11-09 14:13

我现在修改这里

 txtTelNumber.Text = (dsUser.Users[0].IsTelNumberNull() ? DBNull.Value : CommonUtil.ConvertDBParameter(dsUser.Users[0].TelNumber)).ToString();

这样子改,然后也能避免出现错误,但是我不知道哪个方法更好一点

 

rivahuang | 园豆:91 (初学一级) | 2015-11-09 14:20

@rivahuang: 这个好,我大约明白你的意思了,你的用户资料有些是没有填写,有些原来就填写了?你这相当与修改?

稳稳的河 | 园豆:4216 (老鸟四级) | 2015-11-09 14:33

@稳稳的河: 对,如果是新建用户资料,那么就是没有,这时候页面就报错,但是如果去修改用户资料,因为可能已经有数据,所以不会报错,修改和新建都是在一个页面userDetails.aspx

rivahuang | 园豆:91 (初学一级) | 2015-11-09 14:40
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册