• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
vs之bug
博客园    首页    新随笔    联系   管理    订阅  订阅

asp.net 使用存储过程时参数为空时的处理

在写插入新记录的存储过程时,存储过程的参数一般和实体类的属性对应。
但在前台接收数据时不一定需要所有的实体类属性, 这样就有一些属性没有被赋值,如果这些属性是引用类型而又没有被初始化,在给存储过程参数赋值时就可能会出现问题。这是因为数据库中的 null 类型对应.net 中的 DBNull 类型而不是 null 类型,而且DBNull 无法自动转为null。
解决的办法:
1.在实体类定义属性时添加默认值(初始化)。
Code
 1
 2class info
 3{
 4    string _a = "";//对引用类型变量初始化
 5    int _b;//值类型无需初始化
 6
 7    public string A
 8    {
 9        get { return _a; }
10        set { _a = value; }
11    }

12    public int B
13    {
14        get { return _b; }
15        set { _b = value; }
16    }

17}

2.在给存储过程参数赋值的时候进行判断:
cmd.Parameters.Add("@a", _info.A==null?"":_info.A);


3.在sqlserver的存储过程中对参数赋默认值:
CREATE proc a
(
@a varchar(50)=null,
@b varchar(50)=null
)
as
insert into info(a,b) values (@a,@b)
GO
posted @ 2009-09-26 20:40  vs_bug  阅读(903)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3