Не удается неявно преобразовать тип 'int' в 'System.Data.SqlClient.SqlDataReader' - PullRequest
0 голосов
/ 14 апреля 2009

Я пытаюсь использовать SqlDataReader для подсчета количества категорий, которые я использую.

Вот мой код бизнес-логики:

// Return count of main categories for homepage
    [DataObjectMethodAttribute(DataObjectMethodType.Select, false)]
    public int GetMainCatCount(int intCategoryID)
    {
        intCategoryID = SQLInject(intCategoryID);

        SqlConnection con = new SqlConnection(conString);
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = con;
        cmd.CommandText = "SELECT COUNT(intCategoryID) "
                        + "FROM  tblCategory "
                        + "WHERE intCategoryID=" + intCategoryID;
        con.Open();
        return (Int32)cmd.ExecuteScalar();
    }

и вот мой код на странице кода для звонка:

public string CountCategory(int intCategoryID)
    {
        SqlDataReader myReader;
        myReader = CategoryBLL.GetMainCatCount(intCategoryID);

        myReader.Close();
        myReader.Dispose();
        return Convert.ToInt32(myReader);
    }

Я хочу использовать результаты SqlDataReader для заполнения тега метки. Когда я пытаюсь запустить этот код, я получаю это сообщение об ошибке:

Невозможно неявно преобразовать тип 'int' в 'System.Data.SqlClient.SqlDataReader'

Может кто-нибудь сказать мне, где я иду не так. Спасибо ...

Ответы [ 3 ]

2 голосов
/ 14 апреля 2009

Может кто-нибудь сказать мне, где я иду не так. Спасибо ...

Конечно: вы ошибаетесь, пытаясь преобразовать int в SqlDataReader. Вы также пытаетесь преобразовать SqlDataReader в int, позже.

Честно говоря, типы в вашем примере настолько испорчены, что я даже не могу понять, что должен делать код. Чтобы начать, прочитайте это .


Если подумать подробнее, вот потенциальная исправленная версия:

public string CountCategory(int intCategoryID)
{
    int count = CategoryBLL.GetMainCatCount(intCategoryID);
    return count.ToString();
}
1 голос
/ 14 апреля 2009

Ваш метод «GetMainCatCount» возвращает int, но вы присваиваете его возвращаемое значение переменной типа SqlDataReader:

SqlDataReader myReader;
myReader = CategoryBLL.GetMainCatCount(intCategoryID);

Кроме того, ваш метод CountCategory определен как возвращающий строку, но вы возвращаете из нее Int32 (результат вызова Convert.ToInt32 в последней строке).

0 голосов
/ 14 апреля 2009
 myReader = CategoryBLL.GetMainCatCount(intCategoryID);

В этой строке вы пытаетесь преобразовать Int32 в объект типа SqlDataReader.

Вы хотите попробовать myReader.GetMainCatCount(intCatagorID);

...