我是个渣学生,我希望能把StorageRec表中某一条件下(WeapName=XXX)的列StoCount做求和计算后返回一个int值,用作以后的计算
以下是我的代码:
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;
}
求解
以下是我的代码:
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.Parameters.Add(new SqlParameter("@WeapName", Count.Name));
conn.Open();
SqlDataReader dr = cmd.ExecuteReader();
if (dr.Read())
{
int count = (int)dr["StoCount"];
}
cmd.Parameters.Add(new SqlParameter("@WeapName", Count.Name));
conn.Open();int count=(int)cmd.ExecuteScalar();
{
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();
if (!dr.Read()) return 0;
int count = (int)dr[0];//
return count;
}
(int)dr[0] 按索引查找,或
(int)cmd.ExecuteReader() 返回第一行第一列的值