Поделиться через


Создание параметризованных запросов TableAdapter в приложениях .NET Framework

Замечание

Классы DataSet и связанные классы являются устаревшими технологиями .NET Framework с начала 2000-х годов, которые позволяют приложениям работать с данными в памяти, пока приложения отключены от базы данных. Технологии особенно полезны для приложений, которые позволяют пользователям изменять данные и сохранять изменения обратно в базу данных. Хотя наборы данных являются проверенными успешными технологиями, рекомендуемый подход для новых приложений .NET заключается в использовании Entity Framework Core. Entity Framework предоставляет более естественный способ работы с табличными данными в виде объектных моделей и имеет более простой интерфейс программирования.

Параметризованный запрос возвращает данные, соответствующие условиям WHERE предложения в запросе. Например, можно параметризировать список клиентов, чтобы отобразить только клиентов в определенном городе, добавив WHERE City = @City в конец инструкции SQL, которая возвращает список клиентов.

В конструкторе наборов данных создаются параметризованные запросы TableAdapter. Их также можно создать в приложении Windows с помощью команды "Параметризация источника данных " в меню "Данные ". Команда Parameterize Data Source создает элементы управления в форме, где можно ввести значения параметров и запустить запрос.

Замечание

При создании параметризованного запроса используйте нотацию параметров, относящуюся к базе данных, которую вы кодируете. Например, источники данных Access и OleDb используют вопросительный знак "?" для обозначения параметров, поэтому WHERE предложение будет выглядеть следующим образом: WHERE City = ?

Создание параметризованного запроса TableAdapter

Создание параметризованного запроса в конструкторе наборов данных

  • Создайте новый TableAdapter, добавив WHERE предложение с требуемыми параметрами в инструкцию SQL. Дополнительные сведения см. в разделе "Создание и настройка TableAdapters".

    или

  • Добавьте запрос к существующему TableAdapter, добавив WHERE предложение с требуемыми параметрами в инструкцию SQL.

Создание параметризованного запроса при проектировании связанной с данными формы

  1. Выберите элемент управления в форме, которая уже привязана к набору данных. Дополнительные сведения см. в статье "Привязка элементов управления Windows Forms к данным в Visual Studio".

  2. В меню "Данные" выберите "Добавить запрос".

  3. Заполните диалоговое окно построителя условий поиска , добавив WHERE предложение с требуемыми параметрами в инструкцию SQL.

Добавление запроса в существующую форму, привязанную к данным

  1. Откройте форму в конструкторе Windows Forms.

  2. В меню "Данные" выберите "Добавить запрос" или "Смарт-теги данных".

    Замечание

    Если добавить запрос недоступен в меню "Данные" , выберите элемент управления в форме, в которой отображается источник данных, в который нужно добавить параметризацию. Например, если форма отображает данные в управляющем элементе DataGridView, выберите его. Если форма отображает данные в отдельных элементах управления, выберите любой элемент управления, привязанный к данным.

  3. В области таблицы "Выбор источника данных " выберите таблицу, в которую требуется добавить параметризацию.

  4. Введите имя в поле "Новое имя запроса ", если вы создаете новый запрос.

    или

    Выберите запрос в поле "Существующее имя запроса ".

  5. В текстовом поле запроса введите запрос, принимаюющий параметры.

  6. Нажмите ОК.

    Элемент управления для ввода параметра и кнопки Load добавляются в форму в элементе ToolStrip управления.

Запрос значений NULL

Параметры TableAdapter можно назначать значения NULL, если требуется запрашивать записи, у которых нет текущего значения. Например, рассмотрим следующий запрос, имеющий ShippedDate параметр в предложении WHERE :

SELECT CustomerID, OrderDate, ShippedDate
FROM Orders
WHERE (ShippedDate = @ShippedDate) OR (ShippedDate IS NULL)

Если это был запрос к TableAdapter, можно запросить все заказы, которые не были отправлены с помощью следующего кода:

ordersTableAdapter.FillByShippedDate(northwindDataSet.Orders, null);

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

  1. В конструкторе наборов данных выберите запрос TableAdapter, который должен принимать значения параметров NULL.

  2. В окне "Свойства" выберите "Параметры", а затем нажмите кнопку с многоточием (...), чтобы открыть редактор коллекции параметров.

  3. Выберите параметр, разрешающий значения NULL, и задайте для свойства AllowDbNull значение true.