Симон Робинсон - C# для профессионалов. Том II
- Название:C# для профессионалов. Том II
- Автор:
- Жанр:
- Издательство:Лори
- Год:2003
- Город:Москва
- ISBN:5-85582-187-0
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Симон Робинсон - C# для профессионалов. Том II краткое содержание
Платформа .NET предлагает новую среду, в которой можно разрабатывать практически любое приложение, действующее под управлением Windows, а язык C# — новый язык программирования, созданный специально для работы с .NET.
В этой книге представлены все основные концепции языка C# и платформы .NET. Полностью описывается синтаксис C#, приводятся примеры построения различных типов приложений с использованием C# — создание приложений и служб Windows, приложений и служб WWW при помощи ASP.NET, а также элементов управления Windows и WWW Рассматриваются общие библиотеки классов .NET, в частности, доступ к данным с помощью ADO.NET и доступ к службе Active Directory с применением классов DirectoryServices.
Для кого предназначена эта книгаЭта книга предназначена для опытных разработчиков, возможно, имеющих опыт программирования на VB, C++ или Java, но не использовавших ранее в своей работе язык C# и платформу .NET. Программистам, применяющим современные технологии, книга даст полное представление о том, как писать программы на C# для платформы .NET.
Основные темы книги• Все особенности языка C#
• C# и объектно-ориентированное программирование
• Приложения и службы Windows
• Создание web-страниц и web-служб с помощью ASP NET
• Сборки .NET
• Доступ к данным при помощи ADO NET
• Создание распределённых приложений с помощью NET Remoting
• Интеграция с COM, COM+ и службой Active Directory
C# для профессионалов. Том II - читать онлайн бесплатно полную версию (весь текст целиком)
Интервал:
Закладка:
Соединение данных делает процесс извлечения данных еще легче. Элементы управления, такие как поля списков (и некоторые из более специальных элементов управления) готовы к использованию этой техники. Они могут быть связаны с любым объектом, который предоставляет интерфейс IEnumerable
, ICollection
или IListSource
, что включает объекты DataTable
.
В этом разделе мы начнем с модернизации нашего приложения события заказа помещения, а затем пойдем дальше и рассмотрим некоторые другие вещи, которые можно делать со связыванием данных, используя другие элементы управления Web.
Модернизация приложения заказа помещения
Создадим новое приложение Web с именем PCSWebApp3
и скопируем код из созданного ранее приложения PCSWebApp2
. Прежде чем начать новый код, давайте рассмотрим базу данных, к которой мы будем обращаться.
База данных
Для этого примера используем базу данных Microsoft Access с именем PCSWebApp3.mdb
, которую можно найти вместе с загружаемым кодом для этой книги. Для учета масштаба предприятия имеет смысл использовать базу данных SQL Server, но хотя используемая техника практически одинакова, но Access все же облегчает процесс тестирования. В ходе изложения будут показаны необходимые различия в коде, когда они возникнут. Представленная база данных содержит три таблицы:
□ Attendees
содержит список возможных почетных гостей событий.
□ Rooms
содержит список возможных помещений для событий.
□ Events
содержит список заказанных событий.
Таблица Attendees
содержит следующие столбцы:
Столбец | Тип | Примечания |
---|---|---|
ID |
AutoNumber, первичный ключ | Идентификационный номер почетного гостя |
Name |
Text, необходимое значение, 50 символов | Имя почетного гостя |
Text, необязательное значение, 50 символов | Адрес e-mail почетного гостя |
База данных позволяет хранить сведения о 20 почетных гостях, каждый из которых может иметь адрес e-mail. Другое приложение может автоматически посылать письмо почетным гостям после выполнения заказа. Читателям предлагается реализовать такое приложение в качестве упражнения.
Таблица Rooms
содержит следующие столбцы:
Столбец | Тип | Примечания |
---|---|---|
ID |
AutoNumber, первичный ключ | Идентификационный номер помещения |
Room |
Text, требуемое значение, 50 символов | Название помещения |
Таблица Events
содержит следующие столбцы:
Столбец | Тип | Примечания |
---|---|---|
ID |
AutoNumber, первичный ключ | Идентификационный номер события |
Name |
Text, требуемое значение, 255 символов | Название события |
Room |
Number, требуемое значение | Идентификатор помещения для события |
AttendeeList |
Memo, требуемое значение | Список имен почетных гостей |
EventData |
Date/Time, требуемое значение | Дата события |
Несколько событий представлены в загружаемой базе данных.
Соединение с базой данных
Два элемента управления, которые мы хотели бы связать с данными, — attendeeList
и roomList
. Чтобы сделать это, мы должны задать свойства DataSource
этих элементов управления как таблицы, содержащие данные. Код должен загрузить данные в эти таблицы и выполнить соединение. Оба эти элемента управления имеют также свойства DataTextField
и DataValueField
, которые определяют, какие столбцы использовать для вывода элементов списка и задания свойств value
, соответственно. В обоих случаях можно задать эти свойства во время проектирования как Name
и ID
, что будет использоваться, как только задается свойство DataSource
для заполнения элементами списка элемента управления.
Теперь мы можем сделать это в построителе форм Web. Удалите существующие записи из кода ASP.NET для этих элементов управления. Теперь что объявления будут выглядеть следующим образом:
...
...
Следующая задача состоит в создании соединения с базой данных. Существует несколько способов это сделать. Как мы видели в главе ADO.NET ранее, обычно для создания нового соединения используется окно Server Explorer. Так как мы работаем с Access, то тип провайдера для этого соединения будет Microsoft Jet 4.0 OLE DB Provider. Когда это будет задано в окне сервера, мы сможем перетащить соединение на форму Web, что добавит объект Data.OleDb.OleDbConnection
к форме с именем oleDbConnection1
:
public class WebForm1: System.Web.UI.Page {
...
protected System.Data.OleDb.OleDbConnection oleDbConnection1;
Для соединения SQL Server будет добавлен объект SqlClient.SqlConnection
.
В метод InitializeComponent()
также добавится код для задания свойства ConnectionString
формы oleDbConnection1
, таким образом все будет готово для использования в коде.
Мы хотим выполнить соединение данных в обработчике событий Page_Load()
, так что элементы управления будут полностью заполнены, когда мы захотим использовать их в других частях кода. Приступаем к считыванию данных из базы данных, независимо от того, выполняется ли в данный момент операция обратной отправки (даже если элементы управления списком будут сохранять свое содержимое с помощью viewstate), чтобы гарантировать, что мы имеем доступ ко всем данным, которые могут понадобиться, хотя нам и не нужно выполнять само соединение данных при обратной отправке. Это может показаться слегка расточительным, но читатель при желании может в качестве упражнения добавить дополнительную логику к коду для оптимизации такого поведения. Здесь мы сосредоточимся на том, как заставить все работать, не входя в практические детали.
Весь наш код будет помещен между вызовами методов Open()
и Close()
нашего объекта соединения:
private void Page_Load(object sender, System.EventArgs e) {
validationSummary.Enabled = false;
foreach (System.Web.UI.WebControls.WebControl validator in this.Validators) {
validator.Enabled = false;
}
oleDbConnection1.Open();
if (!this.IsPostBack) {
calendar.SelectedDate = System.DateTime.Now;
}
OleDbConnection1.Close();
}
Мы вскоре увидим, почему задание данных календаря оставлено внутри этого кода проверки обратной отправки.
Для обмена данными нам необходимо использовать несколько объектов хранения данных. Мы можем объявить их на уровне класса, чтобы мы имели к ним доступ из других функций. Нам понадобится объект DataSet
для хранения информации базы данных, три объекта OleDb.OleDbDataAdapter
для выполнения запросов на множестве данных и объект DataTable
хранения событий для последующего доступа. Они объявляются следующим образом:
public class WebForm1 : System.Web.UI.Page {
Интервал:
Закладка: