c# число строк с датой возвращает 1 для пустой таблицы - PullRequest
0 голосов
/ 03 апреля 2020

Я запрашиваю SQL базу данных сервера и заполняю данные. Но даже когда my sql не возвращает значений, счетчик строк с данными может быть равен одному. Вот мой код:

strSQL = "My sql string"
cmd.CommandText = strSQL;
cmd.Parameters.AddWithValue("@wsNo", wsNo);
cmd.Parameters.AddWithValue("@reachNo", reachNo);
using (DataTable dt = new DataTable())
    {
        dt.Load(cmd.ExecuteReader());
        MyTextbox.Text = dt.Rows.Count.ToString();
        myGridview.DataSource = dt;
        myGridview.DataBind();
    }

Вид сетки отображает данные правильно и не отображается вообще, если sql не возвращает записей. Но я хочу отобразить количество записей в текстовом поле, и это всегда 1, когда нет записей. В нескольких местах, которые я проверил, подразумевается, что ExecuteReader может быть неподходящим инструментом для этой работы, но если это так, мне не ясно, каким я должен быть. Адаптер данных, и, кажется, работает сейчас. Я не понимаю, почему, не должно иметь никакого значения, но я думаю, переписывание кода исправило то, что я делал неправильно. Никаких дополнительных комментариев не требуется. Спасибо людям, которые ответили.

1 Ответ

1 голос
/ 03 апреля 2020

Обычно вы хотите заполнить свой DataSet DataAdapters. Вам не нужно DataTable, чтобы вернуть одну запись с DataReader. Но вот как вы можете это сделать:

DataTable dt = new DataTable("TableName");

using (connection)
{
    SqlCommand command = new SqlCommand(sSQL, connection);
    connection.Open();

    using (SqlDataReader reader = command.ExecuteReader())
    {
        dt.Load(reader);
    }
}

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