DeepEdit!

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

  • Увеличить размер шрифта
  • Размер шрифта по умолчанию
  • Уменьшить размер шрифта

Использование ADS с Delphi Prism и ASP.NET

спользование ADS с Delphi Prism и ASP.NET
Автор: Боб Сворт (Bob Swart)
В предыдущей статье было продемонстрировано, что Advantage Database Server (ADS) является идеальной заменой для устаревших и потерявших всякую ценность локальных таблиц Borland Database Engine (BDE). Тем не менее, ADS гораздо больше этого, так как он может быть использован для любых задач, связанных с базами данных. Они могут быть автономными (локальными), клиент-серверными, многоуровневыми или даже Интернет (Web) базами данных. В этой статье будет показан способ использования ADS как веб-базы данных для веб-проекта ASP.NET (написанного с использованием Delphi Prism XE), который включает в себя регистрационную форму для участия на мероприятиях и семинарах.
Advantage Database Server v10
В данной статье будет использоваться ADS версии 10, хотя вы можете также использовать версию 9 (так как никаких новых возможностей версии 10 задействовано не будет). При разработке базы данных будет использоваться бесплатное приложение Advantage Data Architect, написанное на Delphi (доступен полный исходный код), которое можно загрузить с веб-сайта Advantage. Data Architect — это прекрасный проект для того, чтобы научиться работать и управлять таблицами ADS.
В качестве примера будет храниться информация об именах и адресах людей, которые хотят посетить какое-либо мероприятие или семинар. Обычные для этого поля: организация (Company), имя (Name) - или "имя + фамилия" (FirstName + LastName), адрес (Address), почтовый индекс (Postal Code), город (City), страна (Country), адрес электронной почты (E-mail), номер телефона (Phone number), и выборочно одно или два поля, связанных с мероприятием (например, какую версию Delphi вы используете в данный момент). В качестве примера для такой регистрационной формы будет рассмотрен The Advantage Database System Training Day, который состоится 3-го ноября в Утрехте (Нидерланды). Для этой регистрации требуется узнать, какую версию ADS (если таковые имеются) использует посетитель в настоящее время, чтобы можно было при необходимости привести в порядок выступления на мероприятии. Вкратце, с помощью Advantage Data Architect были созданы новый словарь данных (Data Dictionary), названный мероприятия (Events), и новая таблица со следующей схемой:

Рисунок 1.

Обратите внимание на поле ID, которое является первичным ключом типа autoinc. Эта таблица сохранена как Registration.adt, и может быть использована приложением, написанным в Delphi Prism. Прежде чем продолжить, нужно убедиться в том, что кроме Advantage Database Server также установлен Advantage .NET Data Provider (таким образом, можно использовать ADO.NET и ASP.NET с декларативной привязкой данных для подключения к базе данных Advantage).
Delphi Prism XE
Delphi Prism XE - это самая последняя версия Delphi Prism на момент написания статьи (подписчики получили два основных обновления в прошлом году: первое — с Delphi Prism 2010 до версии Delphi Prism 2011, и позже, всего несколько недель назад — до версии Delphi Prism XE). Она может работать как в Visual Studio 2008, так и в Visual Studio 2010, но в данной статье будет использована Delphi Prism XE в Visual Studio 2010, совместно с ADS версии 10, как упоминалось выше.
В Delphi Prism ХЕ веб-проект ASP.Net можно создать через File | New Project (см. скриншот):

По замыслу примера так и назовем этот проект - EventRegistration. Проект ASP.NET будет состоять из одной страницы Default.aspx, на которую вначале будет помещён компонент FormView из категории Data на панели инструментов. FormView содержит набор задач, в том числе и выбор источника данных (Data Source). Далее, если на странице все еще нет источника данных, следует выбрать опцию <New data source.. .> (Новый источник данных):

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

В нашем случае оно будет получать их из базы данных SQL, потому необходимо щёлкнуть по пункту SQL Database. Этот шаг автоматически позволит сформировать идентификатор по умолчанию для источника данных (SqlDataSource1) и разместить этот идентификатор в текстовом поле так, чтобы при необходимости его можно было изменять. Затем требуется нажать на кнопку ОК для перехода на следующую страницу мастера. На второй странице необходимо выбрать подключение базы данных (любое из списка существующих), нажав на кнопку New Connection.
После нажатия на кнопку "New Connection" появится диалоговое окно, в котором можно выбрать источник данных. Здесь можно выбрать тип источника данных из списка, в котором содержится Advantage Database Server (только если был установлен Advantage. NET Data Provider), а также, например, DataSnap, InterBase, и несколько драйверов Microsoft.

Рисунок 4.


При нажатии на кнопку "Continue" откроется новое диалоговое окно, в котором можно указать конкретные детали для подключения к словарю данных ADS. Если не указать имя пользователя и пароль для доступа к Data Dictionary (словарю данных), то потребуется указать местонахождение конкретного файла словаря данных (*.add).
Щелчком по Test Connection можно проверить подключение к словарю данных. Если все работает, можно нажать на OK и тем самым вернуться к Мастеру настройки источника данных (Configure Data Source wizard), где после нажатия на кнопку OK для перехода на следующую страницу будет предложено сохранить соединение в файле web.config. Это удобно, так как можно изменить ConnectionString без необходимости перекомпилировать приложение.
Следующая страница позволяет определить удобный способ извлечения данных из базы. Можно воспользоваться оператором SQL, хранимой процедурой или диалоговым окном, чтобы выбрать таблицу (в данном случае она одна - Registration) и указать поля, которые хотим использовать, например, в операторе SELECT. Стоит отметить, что по умолчанию мастер будет подставлять символ "*" во всех полях, но рекомендуется всё же точно указывать значения в нужных полях.
При желании можно добавить пункт ORDER BY в оператор SELECT для сортировки результатов, например, по полю "LastName". Получившийся оператор SELECT выберет все поля таблицы Registration, и так как не используется пункт WHERE, то будут видны все записи таблицы. Такой способ удобен, если надо получить список всех людей, зарегистрировавшихся на мероприятие, но не подходит для случая, когда надо вставить новую регистрацию. Именно для этого и нужен оператор INSERT. Автоматически его можно создать, нажав на кнопку "Advanced" ("Дополнительно") в диалоговом окне мастера.
В окне настроек Advanced SQL Generation Options можно указать, что надо создать операторы INSERT, UPDATE
и DELETE:
Это обеспечит возможность использования FormView в режиме INSERT для вставки новых регистраций. После закрытия диалогового окна можно нажать кнопку ОК, чтобы дойти до последней страницы мастера и точно так же завершить его работу. В результате получаем FormView с заново настроенным компонентом SqlDataSource, который подсоединяется к таблице Registrations из словаря данных Event.
Страница ASP.NET
Теперь можно сконфигурировать страницу ASP.NET, в частности FormView , чтобы она показывалась только в INSERT-режиме. Этого можно добиться, выбрав FormView и проверив в окне Properties Inspector, что DefaultMode установлен в режим Insert следующим образом:
Теперь можно выполнить тестовый запуск приложения, выбрав Debug | Start Without Debugging, который запустит ASP.NET Development Server с браузером по умолчанию, показывая приложение регистрации в действии:

Очевидно, что у этой страницы есть несколько проблем. Во-первых, поле ID типа autoinc, потому оно не должно быть частью экрана ввода данных. А во-вторых, после того как мы нажимаем на ссылку Insert (Вставить), нет перехода к следующей странице "Спасибо!" (мы пока это ещё не реализовали - сделаем это ниже), а вместо этого мы получаем такое сообщение об ошибке:
Способ, которым SQL-команда записана внутри .aspx-файла, называется "декларативной привязкой данных". Парамеры в списке параметров команды INSERT, заданные указанием их имён, называются "именованными параметрами". А исходный способ, которым параметры были занесены в выражение INSERT (с использованием знаков ? - т.е. без указания имён), называется "позиционными параметрами". Итак, декларативная привязка данных в сгенерированном .aspx-файле использует позиционное параметры в операторах INSERT (символы ?), а в списке параметров - именованные. Вот и источник проблемы. Другими словами, InsertCommand задается следующим образом:
InsertCommand = "INSERT INTO  [Registration]   ([FirstName],   [LastName],
[ Address], [ Postcode], [ City], [ Country], [ Company], [ Email], [ Phone], [ ADS],
[ID])  VALUES   (?,   ?,   ?,   ?,   ?,   ?,   ?,   ?,   ?,   ?,   ?)"
При этом InsertParameters содержит следующие имена:

<InsertParameters>






<asp
Parameter
Name=
FirstName"
Type
=
"String"
/>
<asp
Parameter
Name=
LastName"
Type
=
"String"
/>
<asp
Parameter
Name=
Address"
Type
=
"String"
/>
<asp
Parameter
Name=
Postcode"
Type
=
"String"
/>
<asp
Parameter
Name=
City"
Type
=
"String"
/>
<asp
Parameter
Name=
Co untry"
Type
=
"String"
/>
<asp
Parameter
Name=
Company"
Type
=
"String"
/>
<asp
Parameter
Name=
Email"
Type
=
"String"
/>
<asp
Parameter
Name=
Phone"
Type
=
"String"
/>
<asp
Parameter
Name=
ADS "
Type
=
"String"
/>
<asp
Parameter
Name=
"ID"
Type
=
"Int32"
/>
</InsertParameters>






Необходимо заменить символ "?" в операторе INSERT на элементы вида :fieldname и преобразовать строку следующим образом (убрав поле ID):
InsertCommand =   "INSERT   INTO   [Registration]     ([FirstName],    [LastName],    [Address],    [Postcode],    [City],[Country], [Company],    [Email],    [Phone],    [ads])
VALUES    (:FirstName,    :LastName,    :Address,    :Postcode,    :City,    :Country,    :Company,    :Email,    :Phone ,    :ads)"

В самом конце необходимо убедиться, чтобы параметр ID был убран из видимых полей на экране (Bind ("ID")), поскольку больше не надо его использовать.
Сохранив эти изменения, можно нажать на ссылку Insert, чтобы ввести регистрационные данные в базу данных, после чего снова получаем страницу с пустыми полями и можно вводить следующие данные. Это было бы хорошо, если люди стояли бы в очереди за одной и той же машиной, но вместо этого было бы лучше показывать небольшое сообщение "Спасибо". method     Default. SqlDataSource1_Inserted   sender :    System . Object ;
:    System Web   UI WebControls SqlDataSourceStatusEventArgs ); begin
if  Assigned (e Exception)    then begin

/ / обработка ошибки? 

end else begin
Response Write ('<111>Благодарим Вас за регистрацию! </h1>'); end ;
end ;
Данное изменение можно выполнить (и одновременно отловить ошибки) в событии "Inserted" компонента SqlDataSource. Для этого в дизайнере нужно выбрать компонент SqlDataSource, а затем дважды щелкнуть по событию
"Inserted". Здесь можно проверить, были ли какие-нибудь ошибки при выполнении INSERT 

(читателю предлагается домашнее задание вывести уведомления об ошибке), 

или показать сообщение "Спасибо!", используя вызов Response.Write.
Готово. Конечно, итоговая страница регистрации при публикации в Интернете будет выглядеть гораздо лучше (будет добавлено использование валидаторов для проверки того, что необходимые поля заполнены пользователем), но основа уже готова. Если вы хотите узнать больше об ADS, мы планируем провести семинар в Нидерландах 3 ноября. Там будет продемонстрировано создание этого приложения (с использованием валидаторов), которое впоследствии будет доступно по адресу
http://www.eBob42.com/ADSЗаранее спасибо! Боб Сворт (Bob Swart)
Обучение и консультации Боба Сворта
— торговый посредник Delphi и Advantage Database Server

Специальное предложение от Боба Сворта
Руководство с обучающими программами Delphi XE Development Essentials содержит около 200 страниц, посвященных самой последней версии Delphi, поможет вам быть в курсе последних событий и новых функций. Рассматриваемые темы:
Улучшения IDE 

(включая форматирование кода (Code Formatter), интеграция контроля версий (Subversion), интеграция Beyond Compare и улучшения отладчика),

Усовершенствования языка 

(с охватом новых функций, появившихся начиная с Delphi 7, - очень полезно для читателей, которые владеют старой версий Delphi),

Улучшения RTL и VCL 

(в том числе: поддержка Windows 7, примеры с Direct2D, элементами управления Ribbon, Touch, а также улучшения COM), 

большой раздел о Unicode и переход с ANSI на Unicode 

(плюс пример по глобализации и локализации, в котором приложение переводится с английского на голландский и китайский языки),

Поддержка Modelling 

(теперь также доступна и в редакции Professional),

Модульное тестирование, и, в заключении, раздел о утилитах сторонних производителей, которые поставляются с Delphi XE, в том числе: CodeSite, AQTime, интеграция с SubVersion и так далее.
Это учебное руководство предлагается бесплатно для всех разработчиков, которые приобретают Delphi непосредственно у самого автора, Боба Сворта.
Обратите внимание, что в этом руководстве не рассматриваются подробно вопросы разработки баз данных и использования таких технологий как DataSnap, XML и SOAP, и IntraWeb. Эти темы будут рассмотрены в отдельных публикациях немного позже в 2010 году. 

 


Разместить объявление в раздел "продажа автомобилей в Новокуйбышевске" . Объявления в разделе "подать объявление в Шымкенте" . Продажа квартир в Междуреченске на Сландо







jAntivirus