Книги, научные публикации Pages:     | 1 |   ...   | 6 | 7 | 8 |

David Sceppa Microsoft Press Дэвид Москва 2003 Р Г Г If Р F г V А Л А - л г УДК 004.45 32.973.26-018.2 С28 Д. ...

-- [ Страница 8 ] --

Поскольку первая версия поставщика ODBC Data Provider не входит в состав Framework, нельзя просто создать в Visual Studio новый проект и на чать работать с этим поставщиков. Загрузив с MSDN и установив постав щик ODBC Data Provider, добавьте в своем проекте ссылку на него при помо щи диалогового окна Add Reference (рис.

| 7.0.3300. am 7,0.3300, ml 7,0.3300,0 Files soft.

,., 7,0.3300, 7,0.3300. 7,0.3300, eeted Cancel Рис. А-1. Добавление ссылки на поставщик ODBC Data Provider Из рис. видно, что пространство имен поставщика ODBC Data Provider отличается от имен поставщиков OLE DB и SQL Client Data Provider. Объекты поставщика ODBC Data Provider, по крайней мере первой его версии, относятся к пространству имен Данный поставщик, вероятно, войдет в состав будущих версий Framework, и вполне возможно.

что его пространством имен станет В приведенных далее фрагментах кода предполагается, что вы при помощи соответствующих конструкций языка по вашему выбору (команда Import в Visual Basic и команда using в Visual С* добавили в проект и модуль кода ссылки на поставщик ODBC Data Provider.

Приложение А Прочие поставщики данных Подключение к БД при помощи объекта Для подключения к БД с помощью поставщика ODBC Data Provider исполь зуется класс Создайте экземпляр объекта OdbcConnection, задай те его свойству ConnectionString нужное значение (явно или средствами конструк тора) и вызовите метод OdbcConnection.Open.

Вот несколько примеров строк подключения для взаимодействия с БД при помощи объекта OdbcConnection. Подробнее о подключении в БД Ч документа ции, посвященной свойству ConnectionString объекта OdbcConnection, а также в документации вашего ODBC-драйвера.

Подключение к БД SQL Server с указанием имени пользователя и пароля:

Подключение к БД SQL Server по доверенному соединению:

Подключение к БД SQL Server с использованием DSN-имсни ODBC ODBC:

Подключение к БД SQL Server с файлового DSN-имени ODBC:

Следующий фрагмент кода подключается на локальном компьютере к экземп ляру БД MSDE, устанавливаемому вместе с Framework SDK:

Visual Basic Dim strConn As String = & Dim As New cn.CloseO Visual C# string strConn;

strConn = + OdbcConnection );

cn.OpenO;

Использование параметризованных запросов Поставщик ODBC Data Provider поддерживает параметризованные запросы точно так как и поставщик OLE DB Data Provider. В строке запроса обо значьте параметры с помощью маркеров ? и затем добавьте в набор Parameters 570 Приложения соответствующие объекты OdbcParameter. Именованные параметры поставщиком ODBC Data Provider не поддерживаются.

Получение результатов запроса с помощью объекта OdbcDataAdapter Получить результаты запроса и поместить их в объект или по зволяет объект Visual Basic Dim strConn, As String = & _ strSQL = "SELECT OrderlD, CustomerlD, FROM & "WHERE = Dim da As New As param = 5) = Dim As New Visual C# string strConn, strSQL;

strConn = + StrSQL = "SELECT OrderlD, CustomerlD, OrderDate FROM + "WHERE CustomerlD = OdbcDataAdapter da = new L, strConn);

OdbcParameter param;

param = omerlD", OdbcType.NChar, 5);

= DataTable tbl = new Просмотр результатов запроса при помощи объекта Следующий код основан на том же запросе, но получает и выводит его ты с помощью объектов и OdbcDataReader.

Visual Basic Dim strConn, strSQL As String strConn = & strSQL "SELECT OrderlD, CustomerlD, OrderDate FROM Or & _ "WHERE CustomerlD = Dim As New Приложение А Прочие поставщики данных Dim cmd As New Dim As = Odbc 5) = Dim rdr As OdbcPataReader = Do While = & = & = & Loop Visual C# string strConn = strSQL = "SELECT FROM + "WHERE CustomerlD = = new );

cmd = new param;

param = Odbc Type.NChar, 5);

= "ALFKI";

cn.OpenO;

OdbcDataReader = while (rdr.ReadO) ( = + = + = + !

Вызов хранимой процедуры В первой версии поставщика ODBC Data Provider объект OdbcCommand не поддерживает значений Table и из перечисления Для вызова хранимых процедур с помощью поставщика ODBC Data Provider вам потребуется изучить синтаксис CALL ODBC. К счастью, он прост:

{? = CALL ?, ?)} Перед именем хранимой процедуры следует добавить ключевое слово Чтобы передать в вызове хранимой процедуры параметры, независимо от их типа (параметры ввода, вывода или ввода-вывода) используйте маркер ?. Маркеры па 572 Приложения разделяются запятыми, а список параметров нужно заключить в скоб ки. Для перехвата возвращаемого значения добавьте перед ключевым словом кон струкцию ?=, точно так же, как если бы в коде требовалось получить значение, возвращаемое вызовом функции. Весь запрос следует заключить в фигурные скобки.

Следующий фрагмент кода вызывает параметризованную хранимую процеду ру с использованием поставщика ODBC Data Provider:

Visual Basic strConn, strSQL As String = & strSQL = As New Dim As New Dim ram As param = cmd. Odbc 5) = Dim rdr As ) Do While rdr.ReadO = & = & Loop Visual C# string strConn, strSQL;

strConn = + strSQL = = new };

cmd = new param;

param = Odbc Type.NChar, 5);

= "ALFKI";

cn.OpenO;

OdbcDataReader = while (rdr.ReadO) = + = + rdr.CloseO;

Приложение А Прочие поставщики данных Получение информации схемы БД К поставщик ODBC Data крайней мере первая его не предоставляет средств получения информации схемы БД. У этого по ставщика нет эквивалента метода Чтобы полу чить из БД SQL Server и MSDE сведения схемы, по-прежнему можно выполнять запросы к представлениям информационных схем, обсуждавшимся в разделе, посвященном поставщику SQL Client Data но такие запросы, под держиваются не всеми СУБД. в следующих версиях поставщика эти ограничения будут преодолены, Поставщик данных Oracle Client Data Provider На момент написания этой книги специалисты Microsoft разрабатывали постав щик данных для БД Oracle. Он рассчитан на взаимодействие с БД Oracle вер сий 8i и более поздних и позволит работать с новыми типами данных Oracle, такими, как и BFILE. Кроме того, поставщик позволит выбирать содержимое нескольких курсоров REF из хранимой процедуры.

Microsoft не сообщает, как и где будет выпущен поставщик Oracle Client Data Provider и будет ли он отдельным компонентом или составной частью по следующих версий Framework. Если поставщик станет отдельным компонен том, в проектах на него придется добавлять ссылку, как описано в посвя щенном поставщику ODBC Data Provider. На момент написания данной кни ги пространство имен поставщика Oracle Client Data Provider Ч Предполагается, что Oracle Data Provider будет взаимодействовать с вашими БД Oracle при помощи клиентских библиотек Oracle. Для взаимодей ствия с БД Oracle посредством поставщика Oracle Client Data Provider вам следует установить клиентские компоненты Oracle версии или более поздней.

Кроме того, для каждой БД, к которой вы будете подключаться, необходимо с помощью утилиты конфигурирования клиента Oracle определить псевдоним.

В показанных далее фрагментах кода предполагается, что вы при помощи со ответствующих конструкций языка по вашему выбору (команда Import в Visual Basic и команда using в для Visual С* добавили в проект и модуль кода ссыл ки на поставщик Oracle Data Provider.

Подключение к БД при помощи объекта OracleConnection Для подключения к БД Oracle используется объект OracleConnection. Как и при работе с другими поставщиками данных создайте экземпляр объекта Oracle задайте его свойству нужное значение (явно или сред ствами конструктора) и вызовите метод Visual Basic Dim As String strConn = "Data & _ 574 Приложения Dim As New Visual C# string = "Data + = new Conn);

Использование параметризованных запросов Как и поставщик SQL Client Data Provider, Oracle Client Data Provider поддерживает только именованные параметры. Единственное отличие в том, что перед параметром должно стоять двоеточие, т. е. параметризованный Oracle запрос выглядит так:

SELECT ENAME WHERE JOB = Получение результатов запроса с помощью объекта OracleDataAdapter Следующий фрагмент кода заполняет с помощью объекта объект результатами показанного ранее параметризованного запроса.

Basic Dim strConn, As String strConn = "Data & _ "User StrSQL = "SELECT EMPNO, ENAME EHP WHERE JOB = Dim da As New strCon n) As = OracleType.VarChar, 9) = "CLERK" Dim As New DataTable() & & Visual C# string strConn, strSQL;

strConn = "Data + "User StrSQL = "SELECT EMPNO, ENAHE FROM WHERE JOB = :JOB OracleDataAdapter da = new trSQL, strConn);

OracleParameter param;

param =, Приложение А Прочие поставщики данных = "CLERK";

DataTable = new + + Просмотр результатов запроса при помощи объекта OracleDataReader Следующий фрагмент кода те же данные с использованием объекта OracleDataReader.

Visual Basic Dim As String = "Data & strSQL = "SELECT ENAME FROM EHP WHERE JOB Dim As New Dim As New Dim param As param = 9) = "CLERK" Dim As = r() Do While = & = & Loop Visual C# string strConn, strSQL;

strConn = "Data + "User strSQL = "SELECT EMPNO, ENAME FROM EMP WHERE JOB = OracleConnection = new Conn);

cmd = new OracleParameter param;

param = OracleType. VarChar, 9);

= "CLERK";

OracleOataReader rdr = while { = + = + 576 Приложения Специфичные для типы данных Поставщик Oracle Data Provider включает специфичные для Oracle типы данных, точно так же, как SQL Client Data Provider Ч для SQL Server. Исполь зование таких типов данных повышает производительность кода и ускоряет вы борку из объекта поскольку сохранять значения с этими ти пами данных допустимо без предварительной проверки на наличие значений NULL.

Кроме того, многие из этих типов данных предоставляют дополнительную фун кциональность, недоступную при использовании типа дан ных Следующий фрагмент кода получает и выводит результаты запроса с исполь специфичных для Oracle типов данных.

Visual Basic Dim As String = "Data & _ "User StrSQL = "SELECT WHERE JOB = Dim As New Dim As New Dim As = JOB", QracleType. VarChar, 9) = "CLERK" Dim As Dim strEName As Dim As = r() Do While numEmpNo = strEName = = & = & Loop Visual C# string strConn, strSQL;

strConn = "Data + "User StrSQL = "SELECT EMPNO, ENAME FROM EMP WHERE JOB = :JOB OracleConnection = new Conn);

OraclaCommand cmd = new OracleParameter param;

Приложение А Прочие поставщики данных = QracleType. 9);

= "CLERK";

numEmpNo;

strEName;

= numEmpNo = rdr.GetOracleNumber(O);

= = + = + ToStringO);

} Вызов хранимой процедуры Задайте свойству объекта имя нужной хранимой процедуры и затем добавьте параметры в набор Parameters объекта Command.

Добавляя параметры в набор, поставьте перед их именами двоеточия. Затем вы зовите метод Visual Basic Dim As strConn = "Data & "User Dim As New Dim cmd As New с n) = Dim param As param = Orac 5) = param eType.Int32) = Output cn.OpenO Visual C# string strConn;

strConn = "Data + "User OracleConnection = new Conn);

OracleCommand cmd = new OracleParameter param;

578 Приложения = Orac 5);

= param = eType.Int32);

= cmd.

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

BEGIN END;

Выборка данных из курсоров REF Поставщик Oracle Client Data Provider позволит выбирать посредством вы зова хранимой процедуры данные из нескольких курсоров REF. Скажем, у вас есть такое определение пакета Oracle:

CREATE PACKAGE PackCursorTest AS TYPE IS REF CURSOR TYPE IS REF CURSOR RETURN PROCEDURE IN CHAR, pQrders OUT s, pDetails OUT curDetails);

END;

CREATE PACKAGE PackCursorTest AS PROCEDURE OrdersAndDetailsForCustomer ( IN CHAR, pOrders OUT curOrders, pDetails OUT curDetails ) AS BEGIN OPEN pOrders FOR SELECT * Orders E = pCustomerlD;

OPEN pDetails FOR SELECT * FROM WHERE IN OrderlD Orders WHERE Custom = pCustomerlD);

END;

END;

Следующий фрагмент кода вызывает хранимую и помещает содер жимое обоих курсоров REF в один объект Visual Basic Dim As String = "Data Dim As New OracleConnection(strConn) Приложение А Прочие поставщики данных = Dim cmd As New = Dim As = 5) = param = = param = = Dim da As New OracleDataAdapter(cmd) "Orders") Dim ds As New Dim As For Each tbl In & now has & & Next tbl Visual C# string strConn = "Data + "User new Conn);

= cmd = new = OracleParameter param;

param = Orac 5):

= "ALFKI";

param = OracleTy = param = OracleDataAdapter da = new DataSet ds = new foreach (DataTable tbl in + now has + + 580 Приложения Получение информации схемы БД У поставщика Oracle Client Data Provider нет собственных функций для по лучения информации схемы, например имен таблиц и столбцов, из БД Oracle.

Тем не менее вы сможете обращаться к словарю Oracle и получать нужные сведе ния. следующие запросы возвращают из БД список таблиц и столбцов:

SELECT SELECT FROM ORDER BY Подробнее об использовании словаря данных Oracle Ч в документации на Oracle.

Проблемы, общие для поставщиков данных Поставщики данных обеспечивают повышенную производительность и пре доставляют расширенные возможности управления, поскольку каждый из них можно настроить под потребности конкретной СУБД, на работу с которой он рассчитан. Тем не менее переход к отдельным данных вызвал в среде разработчиков некоторое замешательство.

Создание кода, независимого от поставщика Предположим, вы создали приложение, использующее поставщик SQL Data Provider. Время не стоит на месте, и в соответствии с потребностями клиен та вы решили модифицировать приложение так, чтобы оно могло работать и с БД SQL Server, и с БД Oracle. Чем больше кода в приложении основано на постав щике SQL Client Data Provider, тем больше придется менять.

если разделить код на компоненты и организовать их взаимодействие при помощи универсальных интерфейсов типа и вам потребуется изменить код конкретных компонентов.

Рассмотрим два использующих такой метод. В первом примере мы создадим функцию, которая внутренне использует поставщик SQL Client Data Provider, но возвращает данные посредством универсального интерфейса DataTable.

Затем мы обсудим, как изменить функцию для использования другого поставщи ка, не затрагивая вызывающий ее код. Во втором примере реализован этот же подход, но задействована функция, возвращающая объект средства ми универсального интерфейса Следующий фрагмент кода вызывает функцию прини мающую строку со значением столбца и возвращающую объект Data Table с заказами указанного клиента. Внутренне функция использует параметри зованный объект Visual Basic Dim As String = Dim tblOrders As DataTable = ) Приложение А Прочие поставщики данных Private Function ID As String) As DataTable Dim strConn As String = "SELECT Order Date " & _ "FROM Orders WHERE CustomerlD = strConn = "Data & "Initial Dim da As New strCo nn) Dim As SqlParameter param = CustomerlD", SqlDbType.NChar, 5} = Dim As New Return tbl End Function Visual C# string = DataTable tblOrders = );

private DataTable CustomerlD) { string strSQL, strConn;

strSQL = "SELECT OrderlD, CustomerlD, EmployeelD, Order Date + "FROM Orders WHERE CustomerlD strConn = "Data + "Initial SqlDataAdapter da = new SQL, strConn);

SqlParameter param = 5);

= CustomerlD;

DataTable tbl = new return tbl;

} Как уже говорилось, вам может потребоваться модифицировать приложение для взаимодействия с другими СУБД. Функция внутренне работает с поставщиком SQL Client Data но для параметра и воз вращаемого значения использует универсальные типы Ч string и DataTable.

Таким образом, функцию можно переписать для другого поставщика не из меняя код с объектом DataTable. Вот как я откорректировал код функции не трогая ее Visual Basic Private Function ID As String) As DataTable Dim strSQL, As String strSQL = "SELECT OrderlD, CustomerlD, Order Date " & _ WHERE CustomerlD = 582 Приложения = "Data 4 _ Dim da As New st As param = 5) = CustomerlD Dim As New Return tbl End Function Visual C# private DataTable CustomerlD) !

string strConn;

strSQL = "SELECT CustomerlD, Order Date + Orders WHERE CustomerlD = strConn = "Data + "User OracleDataAdapter da = new strConn);

OracleParameter param;

param = CustomerlD", 5);

= CustomerlD;

DataTable tbl = new da.FillCtbl);

return tbl;

Еще один способ основан на том, что код доступа к данным возвращает объекты при помощи универсальных поддерживаемых различными постав щиками Так, можно написать функцию, создающую экземпляр объекта и возвращающую его средствами универсального интерфейса Visual Basic Dim daOrders As = ter() Dim As String = Dim param As IDbDataParameter param = Parameter s{0), IDbDataParameter) = StrCustomerlD Dim ds As Dim As DataTable = Private Function As Adapter Dim strSQL, strConn As String strSQL = "SELECT OrderlD, CustomerlD, EmployeelD, Order Date " & _ Orders WHERE CustomerlD = strConn = "Data & Приложение А Прочие поставщики данных "Initial Dim da As New 5) Return da End Function Visual C# IDbDataAdapter = string strCustomerlD = param = (IDbDataParameter) = strCustomerlD;

ds = new DataTable = private IDbDataAdapter I string strSQL, strSQL "SELECT CustomerlD, Order Date + "FROM Orders WHERE CustomerlD = strConn = "Data + "Initial da = new SqlDataAdapter(str SQL, strConn);

ID", return da;

:

В функцию можно изменить, как показано чтобы она и возвращала объект при помощи интерфейса IDbDataAdapter. Корректировать при этом код, использующий интер фейс IDbDataAdapter, не требуется.

Visual Basic Private Function As IDbData Adapter Dim strSQL, strConn As String strSQL = "SELECT OrderlD, CustomerlD, EmployeelD, Order & "FROM Orders WHERE CustomerlD strConn = "User Dim da As New st "Orders") 5) Return da End Function 584 Приложения Visual C# private { string = "SELECT Order Date + Orders WHERE CustomerlD strConn = "Data + "User da = new strConn);

return da;

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

Вот один из вопросов по поставщику ODBC Data Provider, наиболее час то задаваемых в открытых группах новостей, посвященных ADO.NET: Как мне выбрать для параметров подходящий тип данных поставщика? Обычно разработ чикам приходится его решать, когда они создают собственную логику обновле ния для объектов Скажем, в объекте вашего объекта используется такой запрос:

UPDATE Orders SET CustomerlD = ?, = ?

WHERE OrderlD = ?

Какой тип данных поставщика лучше всего подходит для параметра К счастью, правильный тип данных можно выбрать на основании типа данных, определенного для столбца таблицы. Однако все не столь просто. Если вы обра щаетесь к БД SQL Server при помощи поставщика ODBC Data Provider, свойству OdbcType объекта следует задать значение Однако при использовании поставщика OLE DB Data Provider свойству объекта нужно задать значение Как же бедному разработчику быть?

Самый лучший способ, который я могу предложить, воспользоваться мето дом Если параметр соответствует столбцу БД. создай те запрос, возвращающий данные этого столбца. Затем примените объект Command и выполните запрос с помощью метода Вызовите метод итогового объекта Каждая запись объекта DataTable, возвращен ного методом соответствует столбцу оригинального запроса. Найдите в этом объекте DataTable запись, соответствующую вашему па раметру. Просмотрите содержимое поля данной записи и преобра зуйте целое число в значение из соответствующего перечисления.

Приложение А Прочие поставщики данных Следующий фрагмент кода определяет подходящее значение свойства Odbc Type для столбца БД Visual Basic Dim As String = & Dim As New strSQL = "SELECT OrderDate FROM Orders" Dim As New Dim As OdbcDataReader = Only) Dim As DataTable = Dim As Integer = Type"), Integer) Dim As OdbcType = Od & = & intOrderDateType) & "OdbcType = & C# string strConn, strSQL;

strConn = + new OdbcConnection(strConn );

cn.OpenO;

strSQL = "SELECT OrderDate FROM Orders";

cmd = new OdbcDataReader rdr = DataTable tbl = intOrderDateType = OdbcType odbcOrderDateType * (OdbcType) intOrd erDateType;

= + intOrderDateType);

= + Если писать такой код вам не хочется, воспользуйтесь утилитой Ad Hoc Query записанной на прилагаемом к книге компакт-диске (подробнее об этой ути лите Ч в приложении Б). На рис. А-2 утилита Ad Hoc Query Tool отображает ин формацию схемы о результатах запроса, включая столбец с именем ного для поставщика типа данных. Как видно, столбцу OrderDate БД соот ветствует значение из перечисления OdbcType.

20 595В 586 Приложения Рис. Определение подходящего типа данных поставщика с помощью утилиты Ad Hoc Query Tool Б Утилиты 3 рассматриваются записанные на прилагаемом к книге компакт-диске ути литы, разработанные чтобы упростить программистам создание приложе ний для доступа к данным Ч Ad Hoc ADO.NET DataAdapter Builder и ADO.NET Navigation Control.

Каждая утилита представляет собой проект. Я собираюсь пе риодически размещать в Интернете обновления, добавляющие новые функции исправляющие ошибки. Они доступны на Web-узле, адрес которого указан в записанном на компакт-диске файле Readme.

Как гласит пословица, невозможно постоянно удовлетворять всех окружающих людей. Помня об я поместил на компакт-диск и исходный код каждой утилиты. Ad Hoc Query Tool и DataAdapter Builder написаны па Microsoft Visual Basic исходный код утилиты Navigation Control дан как на Visual Basic так и на Visual С* Заметьте: эти утилиты не обеспечиваются технической поддержкой и не пред назначены для распространения (подробнее Ч в Лицензионном соглашении Microsoft в конце книги). Используйте их на свой собственный страх и риск.

Утилита ADO.NET Ad Hoc Query Tool При создании приложений для доступа к данным мне нередко хочется проверить содержимое таблиц БД. Visual Studio позволяет сделать это. но не предостав ляет способа для выполнения произвольных запросов к БД с использованием вами поставщика данных В с этим я решил создать литу, предоставляющую нужную мне функциональность.

Утилита ADO.NET Ad Hoc Query Tool (рис. позволяет выполнять произволь ные запросы к БД с использованием поставщика данных по вашему выбору.

Кроме того, она позволяет редактировать результаты запросов и передавать эти Приложения изменения обратно в БД. С помощью ADO.NET Hoc Query Tool удастся также просмотреть информацию схемы о результатах запроса и сгенерировать код на ADO.NET, создающий объект для храпения результатов вашего запроса, - I I Рис. Утилита ADO.NET Ad Hoc Query Tool Давайте вкратце рассмотрим эту утилиту.

Подключение к БД Для подключения к БД выберите в главном меню приложения команду Connect.

Откроется диалоговое окно (рис. Б-2), где можно указать строку подключения и поставщик данных Provider;

Рис. Б-2. Создание строки подключения средствами Ad Hoc Query Tool Добавление поставщиков данных По умолчанию в списке поставщиков данных утилиты Ad Hoc Query Tool указаны лишь два поставщика, поставляемых составе Microsoft Framework Ч OLE DB Data Provider и SQL Client Data Provider. Тем не менее утилита под держивает и другие поставщики Для работы с поставщиком данных установленным на вашем компьюте ре и не входящим по умолчанию в состав Microsoft Framework, выберите из Приложение Б Утилиты списка поставщиков в диалоговом окне Connection пункт

Data Рис. Б-3. Добавление поставщика данных в Ad Hoc Query Tool Объектная модель не предоставляет универсального способа, ляющего определить, какие именно символы-разделители применять в именах таблиц и столбцов для конкретного соединения, и поэтому в окне Add Data Provider можно указать, какие именно символы-разделители должен использовать поставщик. Утилите Ad Hoc Query Tool понадобятся эти параметры при генера ции логики обновления.

Поставщики OLE DB Data Provider и ODBC Data Provider рассчитаны на взаимодействие с различными СУБД. Если вы используете их, то при подклю чении к БД Ad Hoc Query Tool самостоятельно определяет подходящие символы разделители.

Выполнение запросов После подключения к БД утилита Ad Hoc Query Tool выводит окно для ввода и выполнения запросов. Введите текст запроса и щелкните кнопку Execute. Утили та выполнит запрос и выведет его результаты в сетке на вкладке Results (рис. 15-4).

На вкладке DataTable Code можно также просмотреть код на ADO.NET, необ ходимый для создания результирующего объекта DataTable.

Просмотр информации схемы Информация схемы, возвращаемая запросом, отображается на вкладке Schema (рис. Б-5). Утилита Ad Hoc Query Tool генерирует эту информацию с помощью метода DataReader.GetschemaTable. Флажок Extended MetaData определяет, будет ли Ad Hoc Query Tool использовать при вызове метода константу из перечисления Если флажок установлен, из БД запрашиваются имена таблиц и столбцов, используемых в запросе, а также ин формация о ключевых столбцах набора результатов запроса, Многие разработчики сталкивались с пытаясь сгенерировать для своих запросов логику обновления с помощью объекта и масте ра Data Adapter Configuration Wizard. Эти проблемы зачастую связаны с что поставщики OLE DB и ODBC-драйверы не информацию схемы, не обходимую и мастеру для генерации логики обновления, как-то: имена таблиц, столбцов и сведения о ключевых столбцах. Утилита Ad Hoc Query Tool 590 Приложения легко и просто просмотреть информацию схемы, возвращаемую вмес те с результатами запроса.

Стоит подробно остановиться на одном из столбцов с информацией схемы.

Большинство имен столбцов на рис. Б-5 интуитивно понятны Ч и т.д. Однако странно, что наиболее ценному столбцу таб лицы схемы дано наименее понятное имя Ч Type. Этот столбец содержит целочисленное значение, особенно полезное само по себе.

F [5] 555- Т [5],, Х SEE Moos EE5 22 Bon Laurence 24 45 - Lincoln (604) BSBEv p Chang CHOPS Yang Wang Elizabeth (171) Sven 40 67 Рис. Б-4. Выполнение запросов к БД средствами Ad Hoc Query Tool Рис. Б-5. Просмотр информации схемы о наборе результатов Приложение Б Утилиты Числа и 202 (рис. Б-5) вам особо ничего скажут, но для данных они имеют глубокий смысл. В следующем фрагменте кода поставщик OLE DB Data Provider. код, вы что при этого поставщика тип данных столбца Ч а столбца CompanyName Ч Visual Basic Dim As typCustomerlD = CType(130, OleDbType) = CType(202, OleDbType) is & is & Visual C# typCompanyName;

typCustomerlD = 130;

= 202;

is + is усвоив эту информацию, вы согласитесь, что данные столбца Type очень полезны, Утилита Ad Hoc Query Tool получает информацию схемы, показанную па рис.

с помощью метода объекта Вы, заметили столбец OleDbType справа от столбца он содержит соответствующие значения из перечисления OleDbType. Фактически столбец OleDbType не являет ся частью объекта методом GetSchemaTable, Утилита Ad Hoc Tool вставляет этот столбец в таблицу с информацией схемы, исполь перечисление, соответствующее задействованному поставщику данных Затем она на основе значений столбца ProviderType заполняет этот добавленный столбец значениями.

Внимание! На самом деле четко определенного набора к постав щикам данных не существует. Отличный пример этому Ч щик SQL XML Data Provider. Он реализует лишь часть объектов конструкторов, предоставляемых поставщиками OLE DB и SQL Client К счастью, принципы работы поставщиков данных созданных специали стами Microsoft Ч OLE DB, SQL Client. ODBC и Oracle Client, практически одина ковы. Благодаря этому, я смог создать утилиты Ad Hoc Query Tool и Builder, одинаково хорошо работающие со всеми этими поставщиками.

Утилиты используют механизм Reflection и предполагают имена классов. Так, если при работе с утилитой Ad Hoc Query Tool применяется поставщик ODBC Data Provider, утилита, чтобы обеспечить поддержку передачи обновлений в БД.

ищет среди предоставляемых поставщиком классов классы, имена которых окан чиваются на Утилита DataAdapter Builder точно так же ищет 592 Приложения имена которых оканчиваются на DataAdapter. Кроме того, Builder проверяет наличие в объекте возвращенном методом специфических столбцов, чтобы как генерировать ло обновления.

Поскольку (пока) четко определенного набора требований к поставщикам данных нет, создание утилит, аналогичных записанным на прилагаемом к книге компакт-диске, можно считать неточной наукой, и я не могу дать гарантии, что они будут нормально работать с другими поставщиками данных Передача обновлений В окне Query есть флажок Updateable. Если он помечен, при выполнении запроса Ad Hoc Query Tool создаст объект чтобы сгенерировать для этого запроса логику обновления. После того как логика будет успешно сге нерирована, в нижней части окна появится кнопка Submit Changes (рис, Б-4).

Щелкните ее, и Ad Hoc Query Tool передаст с помощью объекта CommandBuilder изменения в БД, а также уведомит вас об исходе такой попытки обновления, Параметры приложения Утилита Ad Hoc Query Tool хранит свои параметры, в том числе и список щиков данных прошлых соединений и прошлых запросов, в объекте со строгим контролем типов. Если вам потребуется изменить эти параметры, вос пользуйтесь командой Settings основного меню утилиты. При завершении рабо ты утилита сохраняет свои параметры в XML-файл, находящийся в and ADO.NET\Ad Hoc Query Tool\, а при загрузке Ч считывает их из него.

Утилита ADO.NET DataAdapter Builder Объект CommandBuilder и мастер Data Adapter Configuration Wizard осуществля ют удивительную задачу Ч генерируют логику обновления объекта DataAdapter, однако возможности каждого из них ограниченны. Объект CommandBuilder Ч весьма полезное средство времени выполнения, но он не генерирует код. Мастер Data Adapter Configuration генерирует код, но только для поставщиков данных из состава Framework. Ни объект, ни мастер не создают логику обновления, если в запросе нет полей первичного ключа.

Для решения этих задач и моя утилита ADO.NET DataAdapter Вам необходимо сгенерировать логику обновления, но поставщик OLE DB или драйвер ODBC не возвращает имен таблиц, столбцов и сведений о ключевых столбцах? Или требуется сгенерировать логику для объекта не вхо дящего в состав Framework? Нет проблем.

Пользовательский интерфейс ADO.NET DataAdapter Builder аналогичен утилите Ad Hoc Query Tool. О работе диалогового окна Connect говорилось ранее. Вам нужно лишь ввести строку и выбрать требуемый поставщик данных Утилита DataAdapter Builder отобразит форму, позволяющую вводить и выполнять запросы. Как и Ad Hoc Query Tool, DataAdapter Builder выполняет запросы и выво дит их результаты, а также информацию схемы о наборе результатов.

Приложение Б Утилиты Х Рис. Генерирование логики обновления средствами ADO.NET DataAdapter Основное различие утилит в том, что DataAdapter Builder позволяет вам опре делить логику обновления для объекта и выводит код на ADO.NET для создания этого объекта.

Определение логики обновления Утилита DataAdapter Builder генерирует для объекта DataAdapter логику обновле ния, создавая на основе результатов вашего запроса параметризованные запросы INSERT, UPDATE и DELETE.

Чтобы управлять которую DataAdapter Builder генерирует для запро сов UPDATE и достаточно пометить флажок Concurrency Check (рис.

По умолчанию DataAdapter Builder использует в разделах WHERE этих запросов оригинальные значения всех столбцов. Можно что должны использоваться только столбцы первичного ключа или столбцы первичного ключа и столбцы со значениями типа timestamp.

Если пометить флажок Custom и выполнить откроется диалоговое окно, показанное на рис. Б-7. В нем отображается информация о столбцах и таблицах из схемы запроса, а также используемые при подключении символы-разделители.

Для управления столбцами в разделах SET и WHERE логики обновления объекта используйте доступные в сетке флажки. Не забывайте, что при стоит создать запрос UPDATE или обновляющий несколько записей БД.

Кроме того, в данном диалоговом окне можно указать имя обновляемой базовой таблицы.

Я разработал собственную функцию контроля параллелизма в расчете на три ситуации. она пригодится вам при работе с поставщиками OLE и 594 Приложения драйверами ODBC, не возвращающими сведений о ключевых полях. К таким по ставщикам относятся Microsoft Visual FoxPro OLE DB Provider и Oracle OLE DB Provider. Сведения о полях объекту и мас теру Data Adapter Configuration Wizard что сгенерированный ими запрос UPDATE или DELETE обновит по крайней мере одну запись. Без этих утилиты не смогут сгенерировать логику Если вы имеете дело с поставщиком OLE DB, не возвращающим информации о ключевых полях, для создания логики обновления для объекта DataAdapter примените нестандартную функцию контроля параллелизма, реализованную в утилите DataAdapter Builder.

Logic Рис. Б-7. Определение нестандартной логики обновления Кроме того, эта функция удобна, когда необходим нестандартный контроль параллелизма, отличный от основанного на всех столбцах первичного ключа или столбцах первичного ключа и столбцах со значениями типа Так, иногда требуется использовать в разделе запросов UPDATE и INSERT к таблице Customers БД wind лишь поднабор этих столбцов. Это вполне осуществимо при помощи нестандартного контроля параллелизма.

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

SELECT Quantity, FROM [Order Details] 0, Products P WHERE AND O.Orde ПО = Как рассказывалось в главе объект DataAdapter предназначен для передачи обновлений R отдельную таблицу. Функция нестандартного контроля реализованная в DataAdapter Builder, позволяет передавать обновления только в таблицу Order Details. В диалоговом окне Custom Updating Logic укажите, что об новления требуется передавать в таблицу Order Details и что из разделов SET и WHERE обновляющих запросов следует исключить столбец ProductName.

Приложение Б Утилиты Элемент управления Navigation Control Б главе обсуждались этапы создания стандартного Windows-приложения для доступа к данным. Вы, возможно, заметили, что на создание кнопок для переме щения по содержимому объекта требуется больше времени, чем на созда ние объектов и объектов DataSet со строгим контролем типов, а так же на создание связанных элементов управления. Тем не менее код и необходимые, чтобы добавить в ваш код возможность перемещения по содержи мому объекта очень просты.

Для решения этой проблемы я создал элемент управления Navigation Control. Он включает кнопки, позволяющие перемешаться по содержимому DataSet, Кроме того, он позволяет добавлять и удалять записи в объекте DataSet, а также передавать в БД отложенные изменения. На рис. Б-8 показана простая использующая элемент управления ADO.NET Navigation Control.

Я Fermi Delete Рис. Б-8. Элемент управления ADO.NET Navigation Control на Windows-форме Добавление элемента управления ADO.NET Navigation Control на панель инструментов Visual Studio Если при разработке решения в Visual Studio добавить в это решение проект ADO.NET Navigation Control, одноименный элемент управления автоматически станет доступным на вкладке Windows Forms панели инструментов Visual Кроме того, добавить элемент управления ADO.NET Navigation Control на па нель инструментов Visual Studio щелкнув правой кнопкой и выбрав в контекстном меню команду Customize Toolbox. В открывшемся диалого вом окне перейдите на вкладку Framework Components, щелкните кнопку Browse и затем выберите библиотеку Navigation Control. Щелкните OK, и элемент управления станет доступным на панели инструментов, Конфигурирование свойств ADO.NET Navigation Control, обеспечивающих взаимодействие с данными Добавив элемент управления Navigation Control на вы увидите, что он предоставляет четыре обеспечивающих взаимодействие с дан ными: DataAdapter и 596 Приложения Свойства и конфигурируются точно так же, как и свойства объекта DataGrid. Элемент управления Navigation Control функционирует в целом аналогично управления, связанным с данны типа и DataGrid. На основе заданных вами значений свойств DataSource и DataMember элемент управления Navigation Control ссылается на ющий объект Windows-формы и внутренне использует этот объект для перемещения по базовой структуре данных.

Кроме того, элемент управления Navigation Control включает кнопки Fill и Update. Чтобы они заработали, задайте значения свойствам и этого элемента управления.

Конфигурирование прочих свойств ADO.NET Control Элемент управления Navigation Control также предоставляет Deletes и Значение свойства умолчанию Ч True. Данное свойство опреде ляет, будет ли элемент управления Navigation Control при открытии формы неяв но вызывать метод Значение свойства по умолчанию Ч также True. Оно определя ет, выдается ли при щелчке по кнопке Delete запрос на подтверждение удаления записей или нет.

По умолчанию, если подвести мышь к какой-либо кнопке элемента управле ния Navigation Control, выводится всплывающая подсказка. Отключить под сказок можно, задав свойству ShowTips элемента управления значение False.

Предметный указатель Data Form 21, 22, 27, 28, 32, 35, 38, 59, action query см. запрос, командный Data Manipulation Language CM. DML Active Server Pages см. ASP DDL (Data Definition Language) ActiveX Data aw. ADO disconnected см. объект.

ADO (ActiveX Data 3, отсоединенный 18, 20, 47, 61, 86, 134-136, DML (Data Language) 179, 257, - библиотека интерфейс extensible Stylesheet Language - ядро курсоров 3, Transformations CM. XSLT 2-5, 7, 10, 16, 18, 20, 36, 71, 86, 91, 179, firehose cursor см. курсор, пожарный ASP (Active Server Pages) G globally unique identifier CM.

(globally unique identifier) CLR (Common Language Runtime) 4, К COM (Component Object Common Language Runtime CM. CLR M Component Object Model COM managed code см. код управляемый Component Services 446, MDAC (Microsoft Data Access connected см. объект, Components) подсоединенный metadata см.

conscraint см. ограничение Microsoft Access 8, 22, 6l, 408, cookie Data Access Components CM. MDAC Microsoft Desktop Engine CM. MSDE DAO (Data Access Objects) 3, 9-14, Microsoft Visual InterDev 18, 134, 136, 179, 257, MSDE (Microsoft Desktop Engine) 41, Data Access Objects CM. DAO Data Adapter Configuration Wizard 151, 155, 327, 377, 379, 382, 416, 452, ODBC 47, Data Definition Language CM. DDL ODBCDirect 598 Предметный указатель OLE 8, 61, 93 а Windows Forms Oracle 3, 47, 61, Windows-форма 62, P X Performance Monitor XDR (XML Data Reduced) Q XML 3, 7, 176, (query-based updates) XML Data Reduced CM. XDR см. обновление под управлением XML Schema Definition CM. XSD запросов XML Schema Definition Tool 325, Query Builder 102, 155, 334. 335, 336, R 454, RAD (rapid application development) XSD (XML Schema Definition) (extensible Stylesheet Language RDO (Remote Data Objects) 3, Transformations) 16, 454, Collection Editor автоинкремент 192, Remote Data Objects CM. RDO Б s блокировка sequence см. последовательность быстрая разработка приложений см.

Server Explorer 58, 59, 105, RAD Sn.exe Г SQL глобально уникальный SQL Profiler 41, идентификатор см.

SQL Server 3, 7, 8, 22, 61.

д SQL Server Query Analyzer двухфазная фиксация strong name см. строгое имя диспетчер ресурсов 445, Ж transaction см.

журнал событий two-phase commit cm, двухфазная фиксация запрос V - DDL Visual Basic 3, - Visual Basic 55, - командный, 82, Visual Basic 6 3, - обработка Visual Studio 19, 21, 36, 58.

- отдельный 102, 151, 211. 279, 306, - Visual Studio 6 3, 48, - параметризованный 10, Studio 97 - просмотр результатов w - соединяющий 256, Web Forms 4 Ч шаблонный 473, Web-сервис 62, 426, Предметный указатель - Nothing И - null интерфейс - Stream 456, - SET NOCOUNT ON - - - код - конструктор - - Ч доступа к данным - DataAdapter - пользователя - - Windows Forms Designer К курсор - пожарный 85, - Command - серверный - Connection м - метаданные 2, 11, 12, - CustomersDataTabte ГОД - DataAdapter - 224, 225, 232, 233, - 245, 355, - - Add 119, 190, 200. - - AddNew 305, 310, - 14, - AddRange - - - DataSet 16, 328, - 202, 209, 244, 245, 305, - DataTable 316, - Decimal - Beginlnit 224. 226, 232, 233, 310.

- HttpSessionState - OdbcConnection - BeginLoadDaca 232, - OleDbConnection 45, 67, 68, - BeginTransaction 10, 55, - OrdersDataTable Call - Page - Cancel - Parameter 6, - CancelEdit 15, 209, 244, 245, 305, - SqlConnection - String - ChangeDatabase 70, - Transaction - Clear 206, 224, 226, 232, - XmlDataDocument - ClearErrors 244, - компонентов - Clone 187, 224, 226, 232, ключ - Close 50, 52-54, 112, - внешний 115, - первичный 146, 166, 188, 189, Collect 218, - Commit 70, - уникальный - Compute 232, 234, ключевое слово - Conneccion.Open - New 81, Ч - NOCOUNT 600 Предметный указатель - Сору 187, 226, 232, 234 - 301, 311, - СоруТо 310, - GetErrors 233, - 316 - GetFieldType - CreateCommand 54, 55, 70, 72, 81 - GetFillParameters 163, - CreateParameter 120, 476 - 390, 396, - DataAdapter.Fill 10, 12, 146, 148, - - GetName - DataBind - 56, 58, - Delete 205, 244, 247, 305, 310, 70, 72, - GetOrdinal 87, - DeriveParameters - 244, 248, 263, 265, - Dispose - EditDetail 506 - 244, 248, 264, - EndCurrentEdit 499 - 112, 115, - EndEdit 15, 202, 209, 244, 245, 305, - GetString 88, 316, - 390, 396, - 225, 226. 233, - 115, - EndLoadData - 225, - 9, 83, 85, 225, 111, - HasChanges 225, - ExecuteReader 9, 85, 92, 95, 245, 112, 233, - ExecuteScalar - 225, 227, 458, - 9, - 205, 245, 177, 186, 472, 515, - Item 181, - FillSchema 163, 166, 167, 185, - Load 464, 186, - LoadDataRow 201, 233, - Find 184, 289, 290, 291, 303, Merge 16, 36, 225, 227, 342, 428, 312, 431, - 304, - MoveFirst - Get - - 115, - 179, - 115, - - 16, 35, 225, 226, 233, Navigate 235, 342, 423, - 201, 233, - GetChars NextRecordset 90, - GetChildRows 244, 247, 263, 265, - NextResult - 519 - Open 5, 50, 53, 67, 68, 70, 74, 145, - 244, - Prepare 110, - 244, - Read 86, 89, - GetData 114, - ReadXml 225, 227, 335, 456, 459, - GetDeleteCommand 390, 396, Предметный указатель - ReadXmlSchema 225, 337, Connection 6, 9, 10, 40, 41, 50-52, - Refresh 127, 512 54, 55. 63, 68. 81, 140, 144, 145, - 396, Constraint 14, - 225, 233. ConstraintCollection - ReleaseConnectionPool 494, 497, 499, - ReleaseObjectPool 70, 506, - Remove Customers - 49/ 5, 9, 10, 11, 32, 34-36.

- 106, 107, 134-139, 141, 143, 144, - Reset 225, 227, 233, 146, 148, 149, 151, 155, 158.

- 159, 161, 179, 211, 362, 408, 490.

- 502, - Rollback 70, Database - Select 236, 289, 292, 297, 12, 13, 14, 142, 300, 178, 184, - 449, - 245, - - 248 - SuspendBinding - ToString DataReader 9, 20. 81, 85-89, 112, 133, 179, 181, - Update 5, 6, 34, 159, 162, 163, 363, 368, 442, 479, 498, DataRelation 16, 17, 32, 177, 184, 255, 259, 260, 262, 266, 269, 279, 281, - 5, 12, 177, 180, - 225, 227, 286, 335, 342, 200, 263, 456, 462, 464, 184, - 212, 225, 227, 194, 300, 305, DataSet 2, 11, 15, 24, 31, 32, 133-135, под 137, 145, 146, 148, 174, 182, запросов 183, 279, 324, 329, 337, среда 499, 519, см.

DataTable 20, 57, объект 74, 134, 135, 137, 142, 143, 150, - Application 542, 545 178, 179, 181, 186, 187, 201, 262, 289, 300, - Binding - Cache DataTableMappingCollection - Command 10, 11, 54, 147, 72, 100, 105, 137, 139, 155, 157, DataTableMappingsCollection - 346, 374, 375, 17, 299, 602 Предметный - со строгим контролем типов 19, - Field - ForeignKeyConstraint 184, - - HttpCookie ограничение 183, - ForeignKeyConstraint 184, 197, - 219, 220, 266, 268, 269, - - 184, 55, 101, 105, - UniqueConstraint 184, 106, 159, 190, 266, - - создание - OleDbConnection 6, 40, 44, 46, 53, 55, 56, 58, 63-68, 70, 74, 75, очередь сообщений п - 31, 32, 37, 159, панель 36, 165, параллелизм - параметр - OleDbParameter 109, 120, 122, перечисление - Orders - - 119, - 297, - ParameterCollection последовательность - 9. 10, поставщик 6, 8, - 3, 5, 12, 14, 18, 20, 90, 91, 135, 136, 258, 349 - Microsoft Jet 4.0 OLE DB Provider 47, Request - Microsoft OLE DB Provider For - Response ODBC Drivers - Session - Microsoft OLE DB Provider for - 8, 9, 97, 105, 159, Oracle 47, 67, - SqIConnection 6, 53, 55, - Microsoft OLE DB Provider for SQL Server - SqlXmlAdapter - OLE DB Data Provider 6, 8, - SqlXmlCommand 46, 481, - SQL Client Data Provider 6, 7, - 471, 8, - Stream - SQL Server OLE DB Provider - - SQL XML Data Provider 8, - TextReader 470, 472, 473, - - пространство имен - Transaction 10, 41, 54, 55, 70, проверка подлинности - пространство имен - - - System - 463, - - XmlReader 85, - 40, 69, 148, 161, 166, 177, - отсоединенный 4, 5, 6, - 6, - подсоединенный 4, 5, 6, Предметный указатель - 448 158, 162, 223, пул соединений 50, Count 301, 307, С 313, сбор DataAdapter сборка Database 67, свойство 504, - 158, DataSet 187, 230, - 177, 221, 222, - DataSourcc 67, 68, 503, 509, - 13, 189, 237, DataTable - 120, 178, 188, 237, - - 307, - 546, 120, 122, - 307, Default - 13, 192, 210, 237, 228, - 192, 193, DeleteCommand 11, 35, 138, 158, 237, 159, 363, 378, 381, 388, 407, - AutolncrementStep 193, 197, DeleteRule 251, 277, 237, 238, 423, 490, Depth 114, Cache 221, 222, 228, - Caption 237, Direction 98, 120, - 221, 228, - 281, Driver - EnforceConstraints 221, 222. 291, - 228, Expires - ColumnMapping Expression 13, 197, 240. 274, - - ColumnName 215, 237, ExtendedProperties 221, 228, - Columns 12. 178, 228, 229, 250, 230, 237, 241, 251, 252, 251, 114, - 9, 83, 97, 105, 107.

Fields 155, 377, 378, 387, Filter GetName - HasErrors 221, 223, 228, 230, 243, - 9, 97, 105, 107, 109, 150, 35, 138, 158, Connection 9, 54, 72, 83, 101, 159, 363, 374, 380, 381, 388, 407, - ConnectionString 6, 63, 64, 67, IsClosed - IsEdit - 250, 251, - Constraints 12, 228, 604 Предметный указатель - IsNullable 120 - Rows 12, 200, 229, - 162, 201, 207, 243, 244, - 250, - Item 15, 86, 88, 114, 181, 200, - RowStateFifter 300, 307, 202, 243, 307, 308, - 203, - Locale 221, 223, 228, 231 - Row-Version - 197, 215, 237, - Scale 120, 122, 241 - 477, - MinimumCapacity - SelectCommand 11, 32, 137, 139, - 148, 158, 144, 155, 158, 159, 163, 167, 161, 163 380, 381, - 150, 151, - 158, 161, 163, - ServerVersion 67, - Session - Name 178, - Size 120, 122, 125, 167, - Namespace 224, 228, 231, 237, - Sort 17, 303, 307, 242, - 120, 122, - Nested - 120, 122, - 120, 122, - - Ordinal 178, 237, State 67, 69, - - Table 181, 238, 242, 243, 244, 250, - 252, 299, - Parameters 107, - TableMappings 11, 138, 146, ParentColumns 282, 284 - 282, 284 - TableName 186, 229, - 228, 229 - Tables 221, - ParentTable 282, 284 - Text - Position 494 - Transaction 99, 107, 109, - Precision 120, 122, 167, 397 - Type - Prefix 224, 228, 231, 237, 461 - Unique 13, 183, 184, 189, 238, - Primary-Key 146, 189, 218, 229, 231. - 35, 138, 158, 515 159, 363, 380, 381, 388, 405, 407, 419, - Provider 67, UpdatedDataSource - QuotePrefix - 107, 109, - QuoteSuffix - UpdateRule 251, 277, - 13, 183, 189, 238, 242.

500 - Value, 120 121, 91, 92, 115 - ValueMember - 251, 539, - RelatedTable 251, 252 - - RelationName 282, 284 - XslPath 478, - Relations 221, 224 строгий контроль типов - Row строгое имя - 243, 244 строка подключения 46, 48, 49, Ч 307, 309 счетчик производительности Предметный указатель Т Я транзакция 10, 55, 99, 388, 444 ядро - координатор - доступа к - 44б - 3, 349, Y определения данных си. DDL хранилище данных 6, 7. - данными си. DML Об авторе вторая книга Дэвида (David Sceppa) для Microsoft Press. В 2000 г. он написал Programming ADO".

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

В команде разработчиков Visual Basic Дэвид занимается тестированием функций доступа к данным.

Он обладает званием сертифицированного разработ чика Microsoft, выступает на конференциях по техни ческим вопросам, а также активно участвует в обсуж разворачивающихся в ной группе новостей посвя Выступив на недавней конференции по SQL Server в Сиднее (Австралия), Дэвид наконец-то смог посмот реть пару матчей по австралийскому футболу на престижном стадионе Cricket Grounds.

Незадолго до того, как Марио Лемье и Майкл Джордан вернулись в спорт, про изошло еще одно событие, не получившее столь широкого резонанса, но от это го не менее важное. После долгого перерыва в колыбель мини-футбола Вашингтон) вернулся Дэвид Возможно, Дэвид и несколько потерял форму со времен своей но показал себя умелым ком. Что удивительно, затянувшийся перерыв не повлиял на качества и как и большинство футбольных корреспондентов писали, что на него по-прежнему можно положиться. Под руководством игрока и по совмести тельству тренера, Стива Психа ДюМоша (Psycho Steve команда Дэви да ушла далеко в плей-офф, Дэвид все еще изумлен что Нью (New Patriots) сумели завершить сезон чудес выигрышем Суперкубка, и признает, что просле Стенли над головой Рея Борка (Ray Borque), ЛИЦЕНЗИОННОЕ СОГЛАШЕНИЕ MICROSOFT к ЭТО ВАЖНО Ч ПРОЧИТАЙТЕ ВНИМАТЕЛЬНО. Настоящее лицензионное со глашение (далее является юридическим документом, оно зак лючается между Вами (физическим или юридическим лицом) и Microsoft Corporation (далее на указанный выше продукт Micro который включает программное обеспечение и может сопут ствующие мультимедийные и печатные материалы, а также электронную документацию (далее Любой компонент, входящий в Программный Продукт, который сопровождается отдельным Соглашени ем, подпадает под действие именно того Соглашения, а не условий, изложен ных ниже. Установка, копирование или иное использование данного Про граммного Продукта означает принятие Вами данного Соглашения. Если Вы не принимаете его условия, то не имеете права устанавливать, копировать или как-то иначе использовать этот Программный Продукт.

ЛИЦЕНЗИЯ НА ПРОГРАММНЫЙ ПРОДУКТ Продукт защищен Соединенных по авторскому праву и меж договорами по авторскому праву, а также другими законами и договорами по пра на интеллектуальную 1. ОБЪЕМ ЛИЦЕНЗИИ. дает Вам право:

Программный продукт. можете установить и использовать одну копию Программно го Продукта на одном компьютере. Основной на котором лен данный Программный Продукт, може'[ только для себя копию и использо вать на портативном компьютере.

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

License Pak. Если Вы купили эту лицензию в составе License Рак, можете сделать ряд дополнительных копий программного входящего в данный Программный Продукт, и использовать каждую копию так, как было описано выше. Кроме того. Вы получа ете право сделать число вторичных копий для компьютера целях, также оговоренных выше.

Примеры кода. Это относится исключительно к отдельным частям Программного Про дукта, как примеры кода (далее если таковые входят в Про граммного Продукта.

i) Использование и модификация. Microsoft дает Вам право и модифи цировать исходный Примеров при условии соблюдения пункта ниже. Вы имеете права распространять в виде кода ни ни их ную версию.

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

в) включаете имеющуюся в Программном Продукте ссылку на авторские права в состав эти кетки и своего приложения;

г) согласны освободить от ответственности и взять на себя корпорации Microsoft от любых претензий или преследований по закону, судебные издержки, если возникнут в результате использования или рас Вашего приложения;

и допускаете дальнейшего распространения ко нечным пользователем своего приложения. По поводу отчислений и других условий ли цензии применительно к видам использования или распространения распростра няемых файлов обращайтесь в Microsoft.

2. ПРОЧИЕ ПРАВА И ОГРАНИЧЕНИЯ Х Ограничения на реконструкцию, и не имеете права реконструировать, или данный Программ Продукт, кроме того случая, когда такая деятельность (только в той мере, которая необ ходима) явно разрешается законом, несмотря на это ограничение.

Х Разделение компонентов. Программный Продукт как продукт. Его нельзя отделять от друга для более чем на од ном компьютере.

Х Аренда. Данный Программный Продукт сдавать в прокат, во времен ное или для в иных целях.

Х Услуги по поддержке. Microsoft может (но не предоставить Вам услуги по технической поддержке данного Программного Продукта (далее Предос Услуг регулируется соответствующими правилами и Microsoft, ными я руководстве пользователя, электронной документации и/или других материалах, пуб ликуемых Microsoft. Любой дополнительный программный код, предоставленный в рамках Услуг, считать данного Продукта подпадающим под действие насто ящего Соглашения. Что касается технической информации, Вами корпора ции Microsoft при использовании ее Услуг, то Microsoft может эту в деловых целях, в том числе для технической поддержки продукта и Используя такую техническую информацию, Microsoft не будет ссылаться на Вас.

Х Передача на программное обеспечение. Вы уступить все права, настоящим Соглашением, при условии, что не никаких копий, передадите все составные части данного (включая компоненты, муль тимедийные и печатные материалы, Соглашение и сертификат подлин ности, если таковой имеется) и принимающая сторона согласится с условиями настоящего Соглашения.

Х Прекращение действия Соглашения. ущерба для любых других прав Microsoft может прекратить действие настоящею Соглашения, если Вы нарушите его условия. В этом случае Вы должны будете уничтожить все копии данного Программного Продукта вместе со всеми его компонентами.

3. АВТОРСКОЕ ПРАВО. авторские права и право собственности на Программный Продукт (в том числе любые изображения, фотографии, анимации, видео, аудио, текст, приме ры распространяемые файлы и включенные в состав Программного и любые его копии принадлежат корпорации Microsoft или ее поставщикам. Программный Продукт охраняется законодательством об авторских и договоров. Таким образом. Вы обращаться с Программным Продуктом, как с любым другим охраняемым авторскими правами, с тем исключением, т Вы установить Программный Продукт на один компьютер при условии, что храните ори гинал как резервную или копию.

лов, поставляемых с Продуктом, ОГРАНИЧЕНИЕ ГАРАНТИИ ДАННЫЙ ПРОГРАММНЫЙ ПРОДУКТ (ВКЛЮЧАЯ ПО ЕГО ПРЕ ДОСТАВЛЯЕТСЯ БЕЗ КАКОЙ-ЛИБО ГАРАНТИИ. КОРПОРАЦИЯ СНИМАЕТ С СЕБЯ ЛЮ БУЮ ВОЗМОЖНУЮ ОТВЕТСТВЕННОСТЬ, В ТОМ ЧИСЛЕ ОТВЕТСТВЕННОСТЬ КОММЕРЧЕСКУЮ ЦЕННОСТЬ ИЛИ СООТВЕТСТВИЕ ОПРЕДЕЛЕННЫМ ЦЕЛЯМ. ВЕСЬ РИСК ПО ИЛИ РАБОТЕ С ПРОГРАММНЫМ ПРОДУКТОМ ЛОЖИТСЯ НА ВАС.

НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ КОРПОРАЦИЯ MICROSOFT. ЕЕ РАЗРАБОТЧИКИ, А ТАКЖЕ ВСЕ, ЗАНЯТЫЕ В СОЗДАНИИ, ПРОИЗВОДСТВЕ И РАСПРОСТРАНЕНИИ ДАННОГО ПРО ДУКТА, НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА КАКОЙ-ЛИБО УЩЕРБ (ВКЛЮЧАЯ ВСЕ, ВЕЗ ИСКЛЮЧЕ НИЯ. СЛУЧАИ УПУЩЕННОЙ ВЫГОДЫ, НАРУШЕНИЯ ХОЗЯЙСТВЕННОЙ ПОТЕ РИ ИНФОРМАЦИИ ИЛИ ДРУГИХ УБЫТКОВ) ВСЛЕДСТВИЕ ИСПОЛЬЗОВАНИЯ ИЛИ НЕВОЗМОЖ НОСТИ ИСПОЛЬЗОВАНИЯ ДАННОГО ПРОГРАММНОГО ПРОДУКТА ИЛИ ДОКУМЕНТАЦИИ. ДАЖЕ ЕСЛИ ИЗВЕЩЕНА О ВОЗМОЖНОСТИ ТАКИХ ПОТЕРЬ, ТАК КАК В НЕКОТОРЫХ СТРАНАХ НЕ РАЗРЕШЕНО ИЛИ ОГРАНИЧЕНИЕ ОТВЕТСТВЕННОС ТИ ЗА НЕПРЕДНАМЕРЕННЫЙ УКАЗАННОЕ ОГРАНИЧЕНИЕ МОЖЕТ ВАС НЕ КОСНУТЬСЯ.

РАЗНОЕ Настоящее регулируется законодательством штата Вашингтон (США), кроме случаев (и в той насколько это необходимо) исключительной юрисдикции того на территории которого Программный Продукт.

Если у Вас возникли какие-либо вопросы, настоящего Соглашения, или если Вы лаете связаться с Microsoft по любой причине, пожалуйста, обращайтесь в местное пред ставительство Microsoft или пишите по адресу: Microsoft Sales Information Center. One Way.

Сеппа Дэвид Microsoft ADO.NET Перевод с английского под общей редакцией А. П.

Редактор Ю. П. Леонова Технический редактор Л. А.

Компьютерная верстка В. Б.

Дизайнер обложки Е. В. Козлова Оригинал-макет выполнен с издательской системы Adobe PageMaker 6. и г USE Главный редактор А. И. Козлов Подготовлено к печати издательством Русская Редакция* ул. Заречная, д. (095) тел./факс: (095) e-mail: mfo@rasedit.ru, в г. 3 000 экз.

Формат 70x100/16. Фиэ. п. л. ОАО Новости 107105, ул. Фр Энгельса, Чарльз для И 142-0571;

(095) Ч календарь) Ч непериодический сведения из областей деятельности, обычно с указанием литературных научных достижений, изменений и т. д.

Большая Энциклопедия тематический сборник АЛЬМАНАХ Это уникальное издание адресовано профессионалам в области современных информационных ADG.NET технологий.

Каждый том представляет собой SQL Server тематический сборник статей Доступ к из MSDN Magazine из приложений и Microsoft MSDN Library по наиболее и перспективным технологиям разработки программного Альманах том 1:

Microsoft Microsoft SQL обеспечения.

Server, доступ к данным из 400 2003 Планируется выпуск альманахов по базовым механизмам Framework (модели защиты, отражение, удаленное взаимодействие, сервисы взаимодействия с неуправляемым кодом и специфике языков программирования, поддерживающих отладке/тестированию и другим темам.

Если вас интересует специфическая тематика или определенные материалы из MSDN Magazine и MSDN обращайтесь на сайт издательства www.rusedit.ru или по адресу almanah@rusedit.ru.

Мы постараемся учесть ваши пожелания в будущих выпусках альманаха.

К Альманах том 2:

Продажа книг Microsoft оптом: 142-0571. e-mail:

(095) 400 г.

Оперативная информация для профессионалов в журнале MSDN Magazine/Русская Журнал содержит:

постоянные рубрики вопросы и ответы Ч и ответы, по XML Ч XML (XML Web сервисы и т. на вопросы читателей.

ASP Ч все аспекты ' с ASP и Доступ для с и а с На Х;

ВДеЬ-сераисы, и Ч Джеффри об и и о приёмах И Ч в программистов, оптимизация Ч приемы, задач ' '. ".

популярностью этот обязан своему наполнению: читатель получает самую капотом Ч системных компонентов и свежую и актуальную информацию как программного обеспечения.

от ведущих разработчиков корпорации Для и Microsoft, так и от известных специалистов сфере разработки приложений. код Ч Глубокие и статьи оказывают неоценимую помощь профессиональному регулярно использующему и средства разработки н Из статьи Ольги Тематические статьи главы Microsoft в СНГ ("MSDN Ч глубоко и № 1, апрель разработки ПО.

Оформить подписку и приобрести журнал можно Информационная журнала в Ч www.ITbook.ru В каждом из номеров журнала:

- новости компьютерной подробности о и - тесты и обзоры программных продуктов - мультимедиа, игры и программы - экспертов, встречи с интересными людьми - CD-приложение с утилитами НАШИ ИНДЕКСЫ:

- + CD Pages:     | 1 |   ...   | 6 | 7 | 8 |    Книги, научные публикации