Вы делаете пару вещей неправильно;
1) Вы добавляете параметр ПОСЛЕ того, как выполняете запрос
2) Вы используете свойство SelectCommand, когда вам это не нужно. Фактически, вы, вероятно, путаете это с объектом DataAdapter , который имеет свойство SelectCommand.
Вместо этого попробуйте:
public int GetTotalNumberOfAprovedPictureIds(string SexType)
{
string strConectionString = ConfigurationManager.AppSettings["DataBaseConnection"];
using (SqlConnection conn = new SqlConnection(strConectionString))
{
conn.Open();
using (SqlCommand oCommand = new SqlCommand("SELECT COUNT(*) FROM MEMBERS INNER JOIN Picture ON MEMBERS.MemberID = Picture.MemberID WHERE (Picture.PicAproval = 1) AND (Picture.PicArchive = 0) AND (MEMBERS.MemberSex = @dSexType)", conn))
{
oCommand.CommandType = CommandType.Text;
SqlParameter myParam = oCommand.Parameters.Add("@dSexType", SqlDbType.Text);
myParam.Value = SexType;
object oValue = oCommand.ExecuteScalar();
if (oValue == DBNull.Value)
{
return 0;
}
else
{
return Convert.ToInt32(oValue);
}
}
}
}
Я настоятельно рекомендую вам использовать оператор "USING" при работе с SqlConnection, SqlCommand и аналогичными объектами. Это обеспечит закрытие и удаление вашего соединения, как только он покинет область действия, в том числе после исключения.