在写插入新记录的存储过程时,存储过程的参数一般和实体类的属性对应。
但在前台接收数据时不一定需要所有的实体类属性, 这样就有一些属性没有被赋值,如果这些属性是引用类型而又没有被初始化,在给存储过程参数赋值时就可能会出现问题。这是因为数据库中的 null 类型对应.net 中的 DBNull 类型而不是 null 类型,而且DBNull 无法自动转为null。
解决的办法:
1.在实体类定义属性时添加默认值(初始化)。
}

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

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-08-20
  • 2021-08-04
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2022-02-28
  • 2022-01-28
  • 2021-04-15
相关资源
相似解决方案