SQL-запрос не возвращает правильное количество - PullRequest
0 голосов
/ 28 апреля 2011

Я пытаюсь посчитать количество строк и передать это значение для логики. Ниже приведен код:

   static public int GetNoImagesofMakeID(int makeID)
{
    string sql = "Select COUNT(*) from makeImages";
    SqlDataAdapter da = new SqlDataAdapter(sql, ConnectionString);
    DataTable dt = new DataTable();
    da.Fill(dt);
    return Convert.ToInt32(dt.Rows.Count);
}

  protected void hideUnhideFileUpload(int makeID)
{

    int count = caravans.GetNoImagesofMakeID(makeID);
    if (count >= 10)
    {
        FileUpload2.Enabled = false;
    }

    else
    {
        FileUpload2.Enabled = true;
    }

}

Я не знаю, по какой причине счет всегда равен 1. Я проверил один и тот же запрос на SQL Server и он работает нормально Но здесь dt.rows.count всегда возвращает 1.

Любая помощь будет высоко оценена. Спасибо.

Ответы [ 4 ]

7 голосов
/ 28 апреля 2011

Код возвращает количество строк, а не результат COUNT (*).Этот оператор SQL всегда будет просто возвращать одну строку.Вместо заполнения адаптера данных вы можете просто выполнить команду:

SqlCommand cmd = someSQLConnection.CreateCommand();
cmd.CommandText = "Select COUNT(*) from makeImages";
return Convert.ToInt32(cmd.ExecuteScalar());
1 голос
/ 28 апреля 2011

Почему вы получаете количество строк таблицы, а не возвращаемое значение из запроса на подсчет, так как это вернет только одну строку?

return Convert.ToInt32(dt.Rows[0][0]);
1 голос
/ 28 апреля 2011

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

Больше информации о счетчиках в этом вопросе: Код возврата SQL из Select count (*)

1 голос
/ 28 апреля 2011

Ваш запрос возвращает одну строку с одним значением (количество строк), поэтому dt.Rows.Count правильно возвращает 1 (что означает 1 строку, возвращенную вашим запросом). Используя таблицу данных, вы найдете число, возвращаемое вашим запросом в dt.Rows[0][0] (строка 0, столбец 0 вашей таблицы данных)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...