Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Шпоры_собственные.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
701.16 Кб
Скачать

17. Работа с бд с пом. Sql-запросов. Класс SqlCommand. Объект Command. Создание и инициализация. Командная строка sql-запроса CommandText.

Класс SqlCommand. Компоненты данных ADO.NET в Visual Studio инкапсулируют функциональные возможности доступа к БД различными способами, что помогает разрабатывать программные продукты значительно быстрее и с меньшим количеством ошибок. Команды данных абстрагируют задачу построения и выполнения инструкций SQL или хранимых процедур.

Тип SqlCommand является объектным представлением SQL-запроса, имени таблицы или хранимой процедуры, выполняемой над базой данных SQL Server. Вид команды указывается с помощью его свойства CommandType: Text (по умолчанию), TableDirect, StoredProcedure. Класс SqlCommand предоставляет также инструкцию Transact_SQL.

При создании экземпляра SqlCommand свойствам чтения и записи задаются начальные значения. Этот класс не наследуется.

Класс SqlCommand содержит следующие члены:

  1. Конструкторы

  • SqlCommand() – инициализирует новый экземпляр класса SqlCommand.

  • SqlCommand(String) – инициализирует новый экземпляр класса SqlCommand с текстом запроса.

  • SqlCommand(String, SqlConnection) – инициализирует новый экземпляр класса SqlCommand текстом запроса и подключением SqlConnection.

  • SqlCommand(String, SqlConnection, SqlTransaction) – инициализирует новый экземпляр класса SqlCommand с текстом запроса, подключением SqlConnection и транзакцией SqlTransaction.

  1. Свойства

1) Connection – подключение к базе данных. Можно использовать как существующее подключение, так и создавать новое.

2) CommandType – тип команды (запроса), который будет направляться к базе данных. Возможны следующие значения:

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

  • StoredProcedure. Текстовая команда состоит из названия хранимой проце дуры.

  • TableDirect. Текстовая команда состоит из названия таблицы базы данных. В результате извлекается все содержимое таблицы. Эта команда аналогична текстовой команде SELECT * FROM Название_таблицы. Данная команда поддерживается только управляемым поставщиком OLE DB.

3) CommandText – собственно сам текст запроса. Он возвращает или задает инструкцию Transact_SQL, имя таблицы или хранимую процедуру, выполняемую для источника данных. (Переопределяет DbCommand.CommandText.)

4) CommandTimeout – возвращает или задает время ожидания перед завершением попытки выполнить команду и созданием ошибки.

5) Parameters – получает объект-коллекцию типов SqlParameterCollection, используемых для параметризованного запроса.

6) Transaction – получает или задает объект SqlTransaction, в рамках которого выполняется команда SqlCommand.

  1. Методы

  • Cancel – пытается отменить выполнение SqlCommand. (Переопределяет DbCommand.Cancel().)

  • Clone – создает новый объект SqlCommand, являющийся копией текущего экземпляра.

  • CreateParameter – создает новый экземпляр объекта SqlParameter.

  • Dispose() – освобождает все ресурсы, используемые объектом Component. (Унаследовано от Component.)

  • GetType – возвращает объект Type для текущего экземпляра. (Унаследовано от Object.)

  • ExecuteReader() – Возвращает объект SqlDataReader поставщика данных для доступа к соответствующим данным в режиме однонаправленного чтения.

  • ExecuteNonQuery() –Направляет текст Sql-команды в хранилище данных.

Объект Command. Создание и инициализация. При определении объектов ADO .NET DataAdapter был назван адаптером, преобразователем, предназначенным для взаимодействия с базой данных. Это действительно так, однако если рассматривать взаимодействие с базой данных более глубоко, то выясняется, что в ADO .NET есть специализированный объект для выполнения запросов, называемый Command. Под запросами понимается выполнение SQL-конструкций или запуск хранимых процедур. Этот объект среда создает неявным образом в методе InitializeComponent.

Примеры создания объектов команд для представления SQL-запросов:

// Создание объекта команды с помощью аргументов конструктора:

string strSQL = "Select * From Друзья";

SqlCommand mycommand = new SqlCommand(strSQL, cn);

Console.WriteLine(mycommand.CommandText);

//Создание объекта команды с помощью свойств класса SqlCommand:

SqlCommand testcommand = new SqlCommand();

testcommand.Connection = cn;

testcommand.CommandText = "Select * [From Информация о друзьях]";

Console.WriteLine("Тип команды " + testcommand.CommandType);

Следует понимать, что в этот момент непосредственно SQL-запросы не предъявлены базе данных. Здесь только лишь подготовлены объекты команд для использования в будущем.

После создания активного соединения и SQL-команды следующим шагом является предъявление запроса источнику данных.

Командная строка SQL-запроса CommandText. Для извлечения таблиц и содержащихся в них данных используются SQL-запросы. Переменная CommandText содержит в себе SQL-запрос, синтаксис которого адаптирован для данного поставщика данных. Мы можем управлять извлечением данных, изменяя строку CommandText. Например, если на экранной форме приложения столбец «Код туриста» отображать не нужно, то SQL-запрос будет выглядеть след обр:

string CommandText = "SELECT Фамилия, Имя, Отчество FROM Туристы";

Выведем теперь все записи клиентов, имена которых начинаются на "О": string CommandText="SELECT Фам,Имя,Отчество FROM Туристы where Имя like 'О%'";

Можно использовать все возможности языка манипулирования данными (DML) SQL для отбора данных и модификации строки CommandText для получения нужного результата.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]