Заполнение набора данных

 

Опубликовано: Апрель 2016

Стандартный механизм Visual Studio для выполнения запросов Transact-SQL для заполнения наборов данных — это адаптер таблицы TableAdapter.

Выполнять инструкции SQL или хранимые процедуры над источником данных можно с помощью адаптеров таблиц TableAdapter или объектов команд (например SqlCommand). Для загрузки данных в набор данных, созданный с помощью средств разработки в Visual Studio, используйте адаптеры таблиц TableAdapter. Для загрузки данных в набор данных, созданный программно, используйте адаптеры обработки данных. Если приложение не использует набор данных, используйте объекты команд для выполнения инструкций SQL или хранимых процедур непосредственно над базой данных.

В следующих разделах содержатся сведения о заполнении наборов данных в Visual Studio:

Раздел Описание
Практическое руководство. Заполнение данными набора данных Предоставляет подробные сведения о загрузке данных в наборы данных с использованием адаптеров таблиц и адаптеров данных.
Практическое руководство. Создание и выполнение инструкций SQL, возвращающих строки Предоставляет подробные сведения о создании и выполнении инструкций SQL, возвращающих строки с помощью запросов адаптеров таблиц и командных объектов.
Практическое руководство. Создание и выполнение инструкции SQL, возвращающей одиночное значение Предоставляет подробные сведения о создании и выполнении инструкций SQL, возвращающих отдельные значения, с помощью запросов адаптеров таблиц и командных объектов.
Практическое руководство. Создание и выполнение инструкций SQL, не возвращающих значения Предоставляет подробные сведения о создании и выполнении инструкций SQL, которые не возвращают значений, с помощью запросов адаптеров таблиц и командных объектов.
Практическое руководство. Выполнение хранимой процедуры, возвращающей строки Предоставляет подробные сведения о выполнении сохраненных процедур, возвращающих строки, с помощью запросов адаптеров таблиц и командных объектов.
Практическое руководство. Выполнение хранимой процедуры, возвращающей одиночное значение Предоставляет подробные сведения о выполнении сохраненных процедур, возвращающих отдельные значения, с помощью запросов адаптеров таблиц и командных объектов.
Практическое руководство. Выполнение хранимой процедуры, не возвращающей значения Предоставляет подробные сведения о выполнении сохраненных процедур, которые не возвращают значений, с помощью запросов адаптеров таблиц и командных объектов.
Практическое руководство. Установка и получение параметров командных объектов Предоставляет подробные сведения о присвоении значений параметрам запросов и хранимых процедур и чтении значений параметров, возвращаемых выполняемыми командами.
Пошаговое руководство. Заполнение данными набора данных Предоставляет подробные сведения о создании набора данных и его заполнении данными из базы данных.
Пошаговое руководство. Считывание XML-данных в набор данных Предоставляет подробные сведения о создании приложения Windows, которое загружает XML-данные в набор данных и затем отображает его в элементе управления DataGridView.

Заполнение наборов данных

Если создается набор данных создается с помощью средств разработки Visual Studio (таких, как Конструктор наборов данных или мастер настройки источника данных), то используйте адаптер таблицы TableAdapter для его заполнения. Адаптеры таблиц TableAdapter выполнят инструкции SQL или хранимые процедуры.

Если набор данных создается без использования средств разработки, необходимо использовать адаптеры обработки данных для заполнения и обновления данных. (Адаптеры таблицы TableAdapter фактически не являются классами в .NET Framework 4.6 и 4.5, поэтому они непригодны для работы с наборами данных, которые были созданы без использования средств разработки). Дополнительные сведения о загрузке данных в наборы данных, используя адаптеры таблиц TableAdapter или адаптеры обработки данных, содержатся в разделе Практическое руководство. Заполнение данными набора данных.

Запросы адаптера таблиц

Можно выполнять запросы адаптера таблиц для занесения данных в наборы данных (точнее, для загрузки данных в объекты DataTable, составляющих набор данных). Можно создать запросы адаптера таблиц TableAdapter, используя мастер настройки запроса TableAdapter в Конструкторе наборов данных. Запросы адаптера таблицы отображаются в виде именованных методов адаптера таблицы TableAdapter и выполняются путем вызова метода адаптера таблицы TableAdapter. Дополнительные сведения по созданию и выполнению запросов адаптера таблиц TableAdapter содержатся на следующих страницах:

Объекты команд

Объекты команд дают возможность выполнения инструкций SQL и хранимых процедур напрямую для базы данных без использования DataSet, адаптера таблицы TableAdapter или DataAdapter. (Термин объект команды ссылается на определенную команду поставщика данных платформы .NET Framework, используемого вашим приложением. Например, если приложение использует поставщик данных платформы .NET Framework для SQL Server, объектом команды будет SqlCommand).

Команды запроса данных настраиваются с помощью инструкций SQL или хранимых процедур посредством установки свойства CommandType команды данных в одно из значений в перечислении CommandType. Присвойте CommandType значение Text для выполнения инструкций SQL или значение StoredProcedure для выполнения хранимых процедур. Затем присвойте свойству CommandText текст инструкции SQL или имя хранимой процедуры. После этого можно выполнить команду данных путем вызова одного из методов execute (ExecuteReader, ExecuteScalar, ExecuteNonQuery).

Каждый из Поставщики данных .NET Framework предлагает объект команд, оптимизированный для конкретной базы данных.

С помощью команд данных можно выполнять в приложении следующие действия.

  • Выполнять команды Select, возвращающие результат, который можно читать напрямую, вместо того чтобы загружать в набор данных. Для чтения результатов служит модуль чтения данных (OleDbDataReader, SqlDataReader, OdbcDataReader или объект OracleDataReader), который работает в качестве курсора последовательного доступа, доступного только для чтения, к которому можно выполнить привязку элемента управления. Такая стратегия позволяет сократить объем используемой памяти и очень быстро загружать данные, доступные только для чтения.

  • Выполнять команды DDL для создания, редактирования и удаления таблиц, хранимых процедур и других структур базы данных. (Разумеется, для выполнения этих действий необходимы соответствующие разрешения.)

  • Выполнять команды для получения сведений о каталоге базы данных.

  • Выполнять динамические команды SQL для обновления, вставки или удаления записей вместо того, чтобы обновлять таблицы наборов данных, а затем копировать изменения в базу данных.

  • Выполнять команды, возвращающие скалярное значение (т. е. одно значение), такие как результат агрегатной функции (SUM, COUNT, AVG и т. д.).

  • Выполнять команды, возвращающие данные из базы данных SQL Server 7.0 или более поздней версии в формате XML. Как правило, они служат для того, чтобы выполнить запрос, получить его результаты в формате XML, применить к ним преобразование XSLT (для преобразования данных в формат HTML) и затем отправить результаты в браузер.

Свойства команд содержат все необходимые сведения для применения команд к базе данных. Сюда относятся следующие сведения.

  • Подключение. Команда ссылается на подключение, используемое для обмена данными с базой данных.

  • Имя или текст команды. Команда включает фактический текст инструкции SQL или имя хранимой процедуры, которую необходимо выполнить.

  • Параметры. Для выполнения команды иногда требуется передать вместе с ней параметры (входные параметры). Команда может также возвращать данные в виде возвращаемого значения или выходных параметров. Каждая команда имеет коллекцию параметров, которые можно задавать или считывать по отдельности, чтобы передавать или принимать значения. Дополнительные сведения см. в разделе Практическое руководство. Установка и получение параметров командных объектов.

Команды выполняются с помощью методов, соответствующих ожидаемым результатам. Например, если ожидаются строки, вызовите метод ExecuteReader, возвращающий записи в модуль чтения данных. При выполнении команд UPDATE, INSERT или DELETE вызывается метод команды ExecuteNonQuery, возвращающий количество затронутых командой строк. При выполнении агрегатной функции, например, возврата числа заказов для заказчиков, вызовите метод ExecuteScalar.

Несколько результирующих наборов

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

Если команда содержит несколько инструкций или процедур, все они должны быть одного типа. Например, можно выполнить друг за другом несколько инструкций SQL или несколько хранимых процедур. Однако нельзя смешивать вызовы хранимых процедур и инструкции SQL в одной команде. Дополнительные сведения см. в разделе Извлечение данных с помощью DataReader.

Примечание

При работе с Oracle поставщик данных платформы .NET Framework для Oracle не поддерживает пакетные инструкции SQL. Однако в нем можно использовать несколько выходных параметров REF CURSOR для заполнения набора данных, каждый в своей собственной таблице. Необходимо определить параметры, пометить их как выходные и указать для них типы данных REF CURSOR. Обратите внимание, что при заполнении объекта OracleDataAdapter из параметров REF CURSOR в хранимую процедуру невозможно использовать метод Update, поскольку Oracle не предоставляет сведений, необходимых для определения имени таблицы и имен столбцов при выполнении инструкции SQL.

Безопасность

При использовании команд для обработки данных со свойством CommandType, равным Text, внимательно проверьте сведения, которые отправляются клиентом, перед передачей их базе данных. Злоумышленники могут попытаться отправить (вставить) измененные или дополнительные инструкции SQL в целях получения несанкционированного доступа к базе данных или ее повреждения. Прежде чем передавать пользовательский ввод в базу данных, необходимо всегда проверять допустимость данных. Рекомендуется по возможности использовать запросы с параметрами и хранимые процедуры.

См. также

Общие сведения о приложениях для работы с данными в Visual Studio
Подключение к данным в Visual Studio
Подготовка приложения к получению данных
Выборка данных в приложение
Привязка элементов управления к данным в Visual Studio
Редактирование данных в приложении
Проверка данных
Сохранение данных
Средства для работы с источниками данных в Visual Studio