`

C#中往数据库插入空值的问题

 
阅读更多

在用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();

分享到:
评论

相关推荐

    c#往sqlserver2000数据库中插入时间型数据的空值

    C#往sqlserver数据库中插入时间型数据时,直接插入null,数据库中会变成1900-1-1的数据,这个demo使用了参数的方法进行插入,很简单

    net6 控制台+ log4net+写数据库+自定义字段

    net6 控制台+ log4net+写数据库+自定义字段

    数据库系统原理实验大纲.doc

    在这个数据库之下创建教学管理中的三个表: Students(S#,SNAME,AGE,SEX) 学生(学号,姓名,年龄,性别) Courses(C#,CNAME,SCORE,PC#) 课程(课程号,课程名,学分,先行课号) SC(S#,C#,GRADE) ...

    C#编程经验技巧宝典

    54 <br>0075 用回溯法找出n个自然数中取r个数的全排列 55 <br>0076 约瑟夫环问题 56 <br>0077 猴子选大王 57 <br>0078 如何判断IP是否正确 57 <br>0079 如何将小写金额转换为大写金额 57...

    AppFramework数据库访问组件_代码生成插件_V1.1.rar

    有一种规避的方法,就是避免向数据库插入NULL,即要求所有业务数据入库的值都不为空。但这样作实际上是限制了程序的行为能力,例如无法实现单据草稿的保存。 <br>第三,在插入数据时无法方便的使用字段默认值。最...

    《数据库设计与应用》模拟题4套+答案

    删除表S,将引用表S的视图中一切S的属性置为空值 ( )4. 若用如下的SQL语句创建了一个表SC: CREATE TABLE SC (S# CHAR(6) NOT NULL,C# CHAR(3) NOT NULL,SCORE INTEGER,NOTE CHAR(20));向SC表插入如...

    AppFramework_V1.0

    有一种规避的方法,就是避免向数据库插入NULL,即要求所有业务数据入库的值都不为空。但这样作实际上是限制了程序的行为能力,例如无法实现单据草稿的保存。 <br>第三,在插入数据时无法方便的使用字段默认值。最...

    TSqlStrong:T-Sql类型检查器,用于检测不正确的联接,无效的空值操作,枚举检查约束违例,在呼叫站点上对临时表的错误使用等。 提供在线演示

    插入到选择别名匹配中-防止在有许多列的情况下使用插入选择造成的位置错误。 验证不同存储过程之间临时表结构用法的正确性。 流打字。 通过分析流控制(IF / ELSEIF,CASE),TSqlStrong可以了解有关类型(优化)...

    AppFramework_V1.0_New

    有一种规避的方法,就是避免向数据库插入NULL,即要求所有业务数据入库的值都不为空。但这样作实际上是限制了程序的行为能力,例如无法实现单据草稿的保存。 <br>第三,在插入数据时无法方便的使用字段默认值。最...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    ASP.NET 4高级程序设计(第4版)》【原版书为:Pro ASP.NET 4 in C# 2010】是ASP.NET领域的鸿篇巨制,全面讲解了ASP.NET4的各种特性及其背后的工作原理,并给出了许多针对如何构建复杂、可扩展的网站从实践中得出的...

Global site tag (gtag.js) - Google Analytics