C#中往数据库插入空值报错解决方法

C#中的NUll于SQL中的null是不一样的, SQL中的null用C#表示出来就是DBNull.Value

在用C#往数据库里面插入记录的时候, 可能有的字段你不赋值,那么这个字段的值就为null, 如果按一般想法的话,这个值会被数据库接受, 然后在数 据表里面显示为NUll, 实际上这就牵扯到一个类型的问题, C#中的NUll于SQL中的null是不一样的, SQL中的null用C#表示出来就 是DBNull.Value, 所以在进行Insert的时候要注意的地方.

Example:
       SqlCommand cmd=new  SqlCommand("Insert into Student values(@StuName,@StuAge)" ,con);
       cmd.parameters.add("@StuName" ,stuname);
       cmd.parameters.add("@StuAge" ,stuage);
       cmd.ExecuteNonQuery();

这些代码看似没有问题, 其实当stuname于stuage中的任何一个值为null的时候, 这代码就会报错...汗!!!

解决办法:

        其实最简单的办法就是进行判断, 当stuname或stuage为空时, 插入DBNull.Value.
        但是这样当一个数据库有很多字段时或者是有很多张表时, 代码就会很多了,我也没有找到特别方便的方法,我的方法是:写一个静态的方法来对变量的值进行判断:

Example :     

        static  public  object  SqlNull(object  obj)
        {
            if  (obj == null )
                return  DBNull.Value;

            return  obj;
        }

       //用上面的方法对参数进行了判断 
       cmd.parameters.add("@StuName" ,SqlNull(stuname));
       cmd.parameters.add("@StuAge" ,SqlNull(stuage));
       cmd.ExecuteNonQuery();

转载于:https://www.cnblogs.com/han1982/p/4005509.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值