在用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#往sqlserver数据库中插入时间型数据时,直接插入null,数据库中会变成1900-1-1的数据,这个demo使用了参数的方法进行插入,很简单
net6 控制台+ log4net+写数据库+自定义字段
在这个数据库之下创建教学管理中的三个表: Students(S#,SNAME,AGE,SEX) 学生(学号,姓名,年龄,性别) Courses(C#,CNAME,SCORE,PC#) 课程(课程号,课程名,学分,先行课号) SC(S#,C#,GRADE) ...
54 <br>0075 用回溯法找出n个自然数中取r个数的全排列 55 <br>0076 约瑟夫环问题 56 <br>0077 猴子选大王 57 <br>0078 如何判断IP是否正确 57 <br>0079 如何将小写金额转换为大写金额 57...
有一种规避的方法,就是避免向数据库插入NULL,即要求所有业务数据入库的值都不为空。但这样作实际上是限制了程序的行为能力,例如无法实现单据草稿的保存。 <br>第三,在插入数据时无法方便的使用字段默认值。最...
删除表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表插入如...
有一种规避的方法,就是避免向数据库插入NULL,即要求所有业务数据入库的值都不为空。但这样作实际上是限制了程序的行为能力,例如无法实现单据草稿的保存。 <br>第三,在插入数据时无法方便的使用字段默认值。最...
插入到选择别名匹配中-防止在有许多列的情况下使用插入选择造成的位置错误。 验证不同存储过程之间临时表结构用法的正确性。 流打字。 通过分析流控制(IF / ELSEIF,CASE),TSqlStrong可以了解有关类型(优化)...
有一种规避的方法,就是避免向数据库插入NULL,即要求所有业务数据入库的值都不为空。但这样作实际上是限制了程序的行为能力,例如无法实现单据草稿的保存。 <br>第三,在插入数据时无法方便的使用字段默认值。最...
ASP.NET 4高级程序设计(第4版)》【原版书为:Pro ASP.NET 4 in C# 2010】是ASP.NET领域的鸿篇巨制,全面讲解了ASP.NET4的各种特性及其背后的工作原理,并给出了许多针对如何构建复杂、可扩展的网站从实践中得出的...