标题:给数据库中的表添加数据,如果有空值,怎么传递给数据库,必须把NULL值传递 ...
只看楼主
lxb932979339
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:84
专家分:313
注 册:2013-4-24
结帖率:100%
已结贴  问题点数:10 回复次数:3 
给数据库中的表添加数据,如果有空值,怎么传递给数据库,必须把NULL值传递给数据库
给数据库中的表添加数据,如果有空值,怎么传递给数据库,必须把NULL值传递给数据库
比如下的代码:
public int Add(Model.BookModel model)
        {
            string sqlText = "insert into T_Book(FAuthor,FCategoryID,FName,FYearPublished,IsDel)values(@FAuthor,@FCategoryID,@FName,@FYearPublished,@IsDel);select @@identity";
            object rel = SqlHelper.ExecuteScalar(sqlText, new SqlParameter("FAuthor",model.FAuthor),
                new SqlParameter("FCategoryID",model.FCategoryID),
                new SqlParameter("FName", model.FName),
                new SqlParameter("FYearPublished",model.FYearPublished),
                new SqlParameter("IsDel", model.IsDel));
            return Convert.ToInt32(rel);
        }
如果model.FYearPublished是空值(null)或者model.FCategoryID也是空值(null) ,怎么把这些个空值传递给数据库?(已设置值类型数据可空)



有人 可以指点下么

[ 本帖最后由 lxb932979339 于 2013-4-25 20:04 编辑 ]
搜索更多相关主题的帖子: 数据库 identity public insert 
2013-04-25 18:07
yhlvht
Rank: 13Rank: 13Rank: 13Rank: 13
等 级:贵宾
威 望:36
帖 子:707
专家分:4405
注 册:2011-9-30
得分:10 
没用过SqlHelper类,但我奇怪的是ExecuteScalar方法的参数个数是可变的么,看代码这个方法的参数个数跟表字段数有关,可任意变化的么
像这个参数new SqlParameter("FCategoryID",model.FCategoryID),如果model.FCategoryID为null的话,那就是成了new SqlParameter("FCategoryID",null),理论上猜测这样是没有问题的呀
如果这样不行,那弄个空字符串进去应该没有问题吧,反正也差不多的意思,像这样new SqlParameter("FCategoryID",model.FCategoryID == null? "": model.FCategoryID)
我主是怕你参数都没弄对
2013-04-26 02:22
lxb932979339
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:84
专家分:313
注 册:2013-4-24
得分:0 
回复 2楼 yhlvht
我之所以用ExecuteScalar();方法是因为我在表的首字段设置了标识列,自增长int类型;另外null值是不能传递的
2013-04-26 05:23
lxb932979339
Rank: 5Rank: 5
等 级:职业侠客
威 望:4
帖 子:84
专家分:313
注 册:2013-4-24
得分:0 
回复 2楼 yhlvht
我擦,知道怎么弄了,因该传递DBnull.value,
public int Add(Model.BookModel model)
        {
            string sqlText = "insert into T_Book(FAuthor,FCategoryID,FName,FYearPublished,IsDel)values(@FAuthor,@FCategoryID,@FName,@FYearPublished,@IsDel);select @@identity";
            object rel = SqlHelper.ExecuteScalar(sqlText, new SqlParameter("FAuthor", ModelItemIsNow(model.FAuthor)),
                new SqlParameter("FCategoryID", ModelItemIsNow(model.FCategoryID)),
                new SqlParameter("FName", ModelItemIsNow(model.FName)),
                new SqlParameter("FYearPublished", ModelItemIsNow(model.FYearPublished)),
                new SqlParameter("IsDel", ModelItemIsNow(model.IsDel)));
            return Convert.ToInt32(rel);
        }

        public object ModelItemIsNow(object str)
        {
            if (str == null || str.ToString().Trim ().Length <= 0)
            {
                return DBNull.Value;
            }
            else
            {
                return str;
            }
        }

早晨脑子就是好用。。。。不过也谢谢你了
2013-04-26 05:32



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-405512-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025396 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved