Автор: Меркулов Андрей Александрович
Источник: www.ibprovider.com
Инструкция EXECUTE BLOCK
Инструкция INSERT RETURNING
Инструкция ROLLBACK RETAIN
Инструкция ROWS
Производные таблицы (Derived Tables)
Прочие изменения
Полезные ссылки
Автор: Криста Карпентьер, Корпорация Майкрософт
Продукты и технологии: ADO.NET 1.0, SQL Server 2000, Reporting Services
Как создать расширение для обработки данных для служб отчета SQL Server 2000 Reporting Services, в котором в качестве источника данных используется ADO.NET DataSet.
Еще задолго до появления Visual Studio 2005 и SQL Server 2005 можно было наблюдать целый поток технических статей и маркетинговых материалов, превозносивших достоинства ADO.NET 2.0, новой версии ADO.NET, и тех инструментальных средств создания приложений, которые на нее ссылались. Во многих статьях просто приводился длинный список новых привлекательных возможностей ADO.NET 2.0. Но я думаю, что разработчиков больше интересует, как эти возможности помогут им в решении конкретных задач.
Разработчики приложений для базы данных под ADO.NET часто используют в приложениях для извлечения данных выражения T-SQL. Когда разработчики под ADO.NET плохо понимают архитектуру базы данных, или язык T-SQL, или и то и другое, процесс создания строк на T-SQL в их приложениях может приводить к неэффективности организации доступа к данным или даже к выводу наборов данных с неправильно посчитанными значениями.
ADO.NET относится к промежуточному программному обеспечению, которое внутри каждого приложения ответственно за доступ к базе данных и основано на .NET. Следовательно, использование ADO.NET играет решающую роль в создании эффективных, высокопроизводительных приложений для базы данных. Проверка следующих восьми пунктов гарантирует пользователю, что его приложения ADO.NET будут выполнены корректно.
Классы каркаса, предназначенного для работы с базами данных, собраны в ADO.NET. Класс DataSet (Набор данных) позволяет работать с реляционными данными реляционным же способом, независимо от того, есть ли в текущий момент соединение с источником данных. Разъединенный (disconnected) доступ к данным становится все более значимым в многоярусном и Internet-ориентированном мире данных. При использовании такого типа доступа к данным необходимо установить соединение с базой данных только для изменения или получения ее содержимого.
Префикс имен классов и методов указывает на источник данных. Например, префикс OleDb (OLE для баз данных) указывает на использование источника данных OleDb (OLE для баз данных). Префикс Sql указывает на использование источника данных SqlServer.
Проводник Visual Studio.NET no серверу, Server Explorer—
полезная утилита при работе с базами данных. Хотя и не такая мощная, как SQL
Server Enterprise Manager, она обеспечивает базовые возможности, необходимые при
создании и отладке приложений, работающих с базами данных.
Для того чтобы запустить Server Explorer, выберите пункт меню View=>Server
Explorer. Окно Server Explorer можно прикрепить и при необходимости перемещать.
На рис. 9.1 представлено окно Server Explorer.
Начнем с небольшой программы JustConnect, единственная задача которой — просто устанавливать соединение с базой данных. Пример поможет также проверить, корректно ли установлен SQL Server и существует ли запрашиваемая база данных (в нашем случае — Northwind, входящая в состав SQL Server как ее стандартная часть)
Следующим примером станет использование классов ADO.NET для
получения доступа к данным, хранящимся в базе данных. Соответствующие файлы
находятся в подпапке Connected.
Нам необходимы объекты для соединения, хранения команд, передаваемых базе
данных, и хранения самих данных, поэтому мы определяем три указателя на объекты
классов SqlConnection, SqlCommand и SqlDataReader:
SqlConnectlon *conn = 0;
SqlCommand * command = 0;
SqlDataReader *reader = 0;
Использовавшийся в предыдущем примере режим называют соединенным. Программа соединяется с базой данных, выполняет все необходимые действия, а затем отсоединяется. При этом перемещаться по данным базы можно только в одном направлении. Это соответствует однонаправленному курсору/набору записей в классической технологии доступа к данным ADO. При использовании соединенного режима следует открывать и закрывать соединение явно.
Метод ExecuteReader класса SqlCommand возвращает экземпляр класса Da-taReader. Данные возвращаются, если в качестве команды задан запрос на выборку. Этот же метод можно использовать для обновления, вставки или удаления данных. Метод SQLCommand: : ExecuteReader использует хранимую процедуру sp_executesql. Некоторые команды, использующие операторы SET (оператор Установить), могут работать неправильно. Другие драйверы могут иметь иные ограничения на использование метода ExecuteReader.
При его создании SqlDataReader не указывает ни на какую запись возвращенного набора данных. Поэтому для получения доступа к данным следует вызвать метод Read (Читать). Как показано в примере Connected, для получения доступа к отдельным полям или столбцам текущей строки можно использовать свойство Item (Элемент). Получить все поля строки можно также с помощью метода GetValues.
Object * fields [] = new Object *[NumberFields]; // новый Объект
int NumberFields = reader->GetValues(fields); // читать поля
Класс SqlDataReader может хранить несколько результирующих множеств, что продемонстрировано в примере DataReader. Два запроса, разделенные точкой с запятой, являются двумя SQL-запросами, которые приводят к возврату двух результирующих множеств, по одному на каждый запрос.
Иногда необходимо параметризировать SQL-запрос. Кроме того, бывает желательно связать входные и выходные аргументы хранимой процедуры с переменными программы.