SQL存储过程的SUM函数与Net的SqlDataReader可能产生DBNull的情况

本文介绍了一个SQL存储过程,用于统计指定用户ID下所有照片的总字节数,并通过.NET代码实现调用该存储过程的方法。考虑到可能出现的空值情况,文章提供了相应的处理策略。
ALTER PROCEDURE [dbo].[SizeCount]
@UId int
AS
BEGIN
	SELECT SUM(Photo_Size) as CountNum
	FROM [Photo]
	where UId=@UId END 

如果在sql存储过程中不判断UID的不存在性,而且下面也不判断DBNULL就可能会发生前台程序错误!

        /// <summary>
        /// 统计字节
        /// </summary>
        /// <returns>返回string数量</returns> 
        public static string Photo_SizeCount(int UId)
        {
            string Count_Num = "0";
            SqlParameter[] parameters = {
			 			 new SqlParameter("@UId", SqlDbType.Int,4)
			 			 };
            parameters[0].Value = UId;
            SqlDataReader sdr = SQLHelper.SqlDataReader_Procedure("SizeCount", parameters);
            if (sdr.Read())
            {
                if (sdr["CountNum"]!=DBNull.Value)
                {
                    Count_Num = Convert.ToString(sdr["CountNum"]);
                }
            }
            sdr.Close();
            return Count_Num;
        }

转载于:https://www.cnblogs.com/whso/archive/2011/09/23/2186059.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值