ТОР 5 статей: Методические подходы к анализу финансового состояния предприятия Проблема периодизации русской литературы ХХ века. Краткая характеристика второй половины ХХ века Характеристика шлифовальных кругов и ее маркировка Служебные части речи. Предлог. Союз. Частицы КАТЕГОРИИ:
|
Что такое ADO Express?Что такое ADO? ADO (Active Data Objects) - это высокоуровневый компонент технологии доступа к данным от Microsoft. (т.н. MDAC - Microsoft Data Access Components) Другие компоненты - это старый добрый ODBC и новый низкоуровневый интерфейс OLE DB. Данными для ADO могут быть как привычные таблицы Access или серверные базы MS SQL или Oracle, так и несколько экзотичные Microsoft Active Directory Service, XML-файлы и т.п. ADO- более новая технология чем ODBC, работает через интерфейс OLE DB. Впрочем, можно использовать ADO и через ODBC - хотя стоит ли? OLE DB превосходит ODBC по скорости и, похоже, Microsoft основную ставку делает именно на парочку ADO+OLE DB. Более того, похоже, и Borland делает ставку на ADO, старик BDE готовится к отправке на пенсию, а компоненты для работы с ADO от Borland (ADOExpress) теперь входят в поставку Delphi. (существуют также Delphi-компоненты для работы с ADO от сторонних фирм). Так что если вы хотите работать с MS SQL 7 или MS SQL 2000 без ограничений, которые накладывает BDE (BDE по-прежнему полностью поддерживает только MS SQL 6.5 и обновления BDE пока не предвидится) то вам прямая дорога к изучению ADO Express. Что касается баз Access то я очень бы посоветовал обратить на них внимание программистам, уставшим от «парадоксального» поведения Paradox+BDE. Начиная с версии Access 2000 Microsoft удалось догнать и перегнать старый, добрый Paradox (не менявшийся, насколько мне известно, уже довольно давно). Примечание: Что такое ADO Express? Это VCL-компоненты от Borland соответствующие иерархии компонентов ADO от Microsoft и упакованные так, чтоб их было удобно использовать программистам, привыкшим к BDE - TADOConnection, TADOCommand, TADODataSet, TADOTable, TADOQuery, TADOStoredProc и TRDSConnection. Примечание: TADOConnection - это что-то вроде описателя адреса, по которому находятся данные. Главное его свойство ConnectionString (строка подключения) - это несколько строк вида «имя параметра = значение», которые описывают, где находятся данные и как к ним подключаться. Microsoft.Jet.OLEDB.4.0 - это OLE DB поставщик данных, для баз Access, существует множество других провайдеров, например S Q L O L E D B. 1 - провайдер для MS SQL. Придется запоминать кучу всех этих параметров строк подключения? Выберите провайдера (для баз Access - провайдер JET, для MS SQL - OLE DB Provider for SQL server). Нажмите кнопку далее
После того как UDL-файл готов можно использовать его в Delphi - создайте новый проект, поместите на форму (или на Data Module) компонент ADOConnection, щелкните по свойству ConnectionString и укажите путь к UDL-файлу откуда этот String нужно взять:
Все остальные компоненты ADO Express также имеют свойство ConnectionString - и в принципе, можно вообще обойтись без компонента ADOConnection - просто в каждом из используемых компонетов ADOQuery, ADOCommand и т.д. указать путь к этому UDL- файлу. Однако компонент ADOConnection содержит еще парочку полезных свойств - он позволяет указывать свойства «курсора» и управлять транзакциями. Простой пример. Примечание: Про курсоры и транзакции. Немного теории. Данные, как известно, хранятся в таблицах. Как правило, считывать сразу всю информацию из таблицы никому не нужно - поэтому считывается только часть, ограниченная каким-то условием (это условие задается обычно в SQL с помощью запросов с условием - Where) и называется Result Set. Result Set может быть очень большим - а программе как правило нужно иметь возможность изменять только одну строку из него, перемещаясь по нему в одном направлении (только вперед) или в обоих направлениях. Такую возможность предоставляет так называемый «курсор» - он и называется так потому, что как бы указывает на то - с какой строкой из результирующего набора работает программа. Курсоры бывают разных видов. Во-первых, курсор может находиться как в памяти сервера, так и в памяти компьютера, который подключился к серверу (клиента). Местоположением курсора управляет свойство CursorLocation - оно может принимать два значения - clUseServer (курсор находится на сервере) и clUseClient (курсор находится на клиенте). Несмотря на то, что серверные курсоры кажутся заманчивыми - их используют не так уж часто - во-первых, не все поставщики данных их поддерживают, во-вторых, они здорово потребляют ресурсы сервера и при большом количестве клиентов их лучше не использовать. А теперь представьте себе - ваша программа считала данные в курсор - и показывает их пользователю, а в это время другая программа считывает данные из таблицы, изменяет их, и записывает обратно. В результате курсор данных, с которым работает ваша программа, становится не актуальным. Поэтому вид курсора влияет на то, обновляются ли автоматически данные, считанные в ваш курсор, если их изменили другие пользователи (говоря научно - на конкурентные изменения данных). Типом курсора управляет свойство CursorType. Существуют следующие типы куросоров
ADO работает довольно гибко, если до открытия набора данных установить тип курсора, который не поддерживается поставщиком данных, то набор все равно будет открыт без сообщений об ошибках, но в свойства CursorType, CursorLocation будут установлены новые значения, такие, с которыми удалось открыть набор данных. Последнее, на что влияют курсоры - это блокировки (свойство LockType). Это свойство управляет тем, когда именно запись блокируется от изменений со стороны других пользователей при редактировании.
Теперь о транзакциях. Компонент ADOСonnection имеет три метода для работы с транзакциями:
Транзакции используются в том случае, когда нужно внести несколько последовательных изменений данных, причем в случае сбоя на любом из этих изменений нужно отменить и его и все предыдущие изменения в транзакции. Классический пример - перевод денег в банке с одного счета на другой - при этом сумма остатка на одном счете убавляется, а на другом прибавляется, если во время второй операции произойдет сбой, то должна быть отменена и первая операции - иначе чьи-то денежки пропадут в виртуальное никуда. После вызова метода BeginTrans свойство InTransaction компонента ADOConnection будет равно True до тех пор, пока транзакция не будет либо подтверждена, либо отменена. С транзакциями связано также свойство IsolationLevel - оно показывает можно ли считывать данные, измененные в процессе транзакции, если транзакция еще не подтверждена. Значение этого свойства - ilReadCommitted означает что считываются только изменения, подтвержденные CommitTransaction, значение ilReadUncommitted - считываются неподтвержденные изменения, ilRepeatableRead - изменения, внесенные другими транзакциями не видны до тех пор, пока не переоткрыть набор данных. Не нашли, что искали? Воспользуйтесь поиском:
|