首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

关于SqlDataReader的IndexOutOfRangeException有关问题

2012-06-20 
关于SqlDataReader的IndexOutOfRangeException问题我是个渣学生,我希望能把StorageRec表中某一条件下(Weap

关于SqlDataReader的IndexOutOfRangeException问题
我是个渣学生,我希望能把StorageRec表中某一条件下(WeapName=XXX)的列StoCount做求和计算后返回一个int值,用作以后的计算 
以下是我的代码:

C# code
        public static int Count(Entity.WeaponInfo Count)        {            SqlConnection conn = new SqlConnection("Server=.; Integrated Security=True; Database=WeaponSalesMng");            SqlCommand cmd = new SqlCommand("select sum(StoCount) from StorageRec where WeapName=@WeapName", conn);            cmd.Parameters.Add(new SqlParameter("@WeapName", Count.Name));            conn.Open();            SqlDataReader dr = cmd.ExecuteReader();            dr.Read();            int count = (int)dr["StoCount"];//未处理 IndexOutOfRangeException            return count;        }


求解。。。。。。


[解决办法]
cmd.ExecuteScalar();
返回结果集的第一行第一列,直接用这个就可以了
[解决办法]
SqlCommand cmd = new SqlCommand("select sum(StoCount) as StoCount from StorageRec where WeapName=@WeapName", conn);
cmd.Parameters.Add(new SqlParameter("@WeapName", Count.Name));
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
int count = (int)dr["StoCount"];
}

[解决办法]
这样查询,列名就变成了 sum(StoCount) 而不再是 StoCount
(int)dr[0] 按索引查找,或
(int)cmd.ExecuteReader() 返回第一行第一列的值

热点排行