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

来源:转载

    在写插入新记录的存储过程时,存储过程的参数一般和实体类的属性对应。

    但在前台接收数据时不一定需要所有的实体类属性, 这样就有一些属性没有被赋值,如果这些属性是引用类型而又没有被初始化,在给存储过程参数赋值时就可能会出现问题。这是因为数据库中的 null 类型对应.net 中的 DBNull 类型而不是 null 类型,而且DBNull 无法自动转为null。

    解决的办法:

    1.在实体类定义属性时添加默认值(初始化)。

    class info

    {

    string _a = "";//对引用类型变量初始化

    int _b;//值类型无需初始化

    public string A

    {

    get { return _a; }

    set { _a = value; }

    }

    public int B

    {

    get { return _b; }

    set { _b = value; }

    }

    }

    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

分享给朋友:
您可能感兴趣的文章:
随机阅读: