Результаты Paginate Mysql в запланированной задаче WPF

0

У меня есть общий метод, который позволяет мне запускать запрос внутри запланированных задач следующим образом:

public static DataSet ExecuteQuery(string strQuery)
{
    DataSet ds = new DataSet();

    using (MySqlConnection mySqlConnection = new MySqlConnection("server=localhost;uid=root;database=sampleDB"))
    {
        mySqlConnection.Open();

        using (MySqlDataAdapter dataAdapter = new MySqlDataAdapter(strQuery, mySqlConnection))
        {
            dataAdapter.TableMappings.Add("Table", "data");
            dataAdapter.Fill(ds);
        }

        mySqlConnection.Close();
    }
    return ds;
}

Чтобы использовать это, я могу вызвать его изнутри моей задачи следующим образом:

DataSet results = DataConnection.ExecuteQuery("SELECT * from appointments");

Я искал способ разбивки на страницы, но каждое найденное мной решение использует DataGrid и кнопки для перехода со страницы на страницу.

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

Я бы хотел, чтобы все это закончилось тем же простым вызовом, но изменил его на что-то вроде:

DataSet results = DataConnection.ExecuteQuery("SELECT * from appointments", 1, 50);
  • 0
    Почему кнопки DataGrid + не так, как вы хотите сделать свою нумерацию страниц? Вы ищете полностью виртуализированную коллекцию с прокруткой в модели представления, которая автоматически запрашивает базу данных при прокрутке пользователя? Пожалуйста, дайте некоторые подробности относительно того, что вы на самом деле хотите.
  • 0
    Несмотря на то, что это приложение WPF, пользователь никогда не видит данные, это делается для задачи, которая затем форматируется как JSON и отправляется на веб-сервер.
Показать ещё 3 комментария
Теги:
wpf

1 ответ

0

Я думаю, вы смотрите на неправильное место для разбивки на страницы. Вы не должны указывать это на уровне кода, если вы действительно говорите о "сотнях тысяч записей". У вас должен быть первичный ключ или индексированное поле в таблице MYSQL, которое можно просто разбивать на страницы на основе этого поля.

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

Для реализации:

1) Проверьте, есть ли у вас Id, если вы не можете добавить его с помощью функции Auto Increment. Или вы можете просто использовать LIMIT @Start, @End 2) Измените свой запрос на С# и выполните разбиение на страницы на основе взаимодействий пользовательского интерфейса.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню