Использование ASP. Net при обращении к базе данных.


Практическое занятие №5. Тема «Использование ASP. Net при обращении к базе данных».

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

Создайте форму Web, которая содержит поля для фамилии, имени, отчества туриста, названии тура, места отдыха и календарь для выбора даты отправления. Будем использовать элементы с проверкой для всех полей кроме календаря, который будет проверяться на сервере и предоставлять дату по умолчанию в случае, если ничего не было введено. Для вывода результатов заказа используем элемент метка Label.

Создайте приложение ASP.NET Web Application. В появившейся Web форме

WebForm.aspx. расположите:

  • текстовые поля для Фамилии (id = LastNameBox), имени (id= NameBox) и отчества (id = Otcestvo).
  • Расположите объект ListBox (id = TourList),  в свойстве Items откройте Collection Editor и создайте три пункта списка. Свойства Value задайте 1,2,3 (см. рис. 1).

Окно создания пунктов списка вебформы

Рис.1 Окно создания пунктов списка.

  • Перетащить объект календарь.
  • Добавить кнопку (id = SubButton, Text = «Заказать»).
  • Добавить объект Label (id = Result, Text = “”).

В результате всех действий должна получиться следующая форма (рис. 2)

Макет web- формы

Рис. 2 Макет web- формы.

Дважды щелкаем по кнопке и вводим следующий код:

private void SubButton_Click(object sender, System.EventArgs e)

{

if (this.IsValid)

{

Result.Text = TourList.SelectedItem.Text+» тур заказан на » + Calendar1.SelectedDate.ToLongDateString()+     » для  » + LastNameBox.Text + » «+ Name.Text+ » «+ Otcestvo.Text+ «, место отдыха «;

foreach (ListItem i in PlaceList.Items)

{

if (i.Selected)

{

Result.Text += i.Text + » «;

}

}}}

В директиву Page добавить код

private void Page_Load(object sender, System.EventArgs e)

{

if (!this.IsPostBack)

{

Calendar1.SelectedDate = System.DateTime.Now;

}

}

Запустите приложение F5. Откройте для просмотра в браузере.

Запись в базу данных.

В предыдущем примере обработчик событий SubButton_Click собирает строку из характеристик и выводит в элемент управления Label. Чтобы добавить заказ в базу данных, нужно реформировать созданную строку в запрос SQL INSERT и выполнить его.

string oleDbCommand=»INSERT INTO Tourist(LName,Name,Otcestvo) VALUES(‘»+LastNameBox.Text+»‘,'»+ Name.Text+»‘,'»+Otcestvo.Text+»‘)»;

После создания строки запроса SQL, можно использовать ее для построения объекта OleDb. OleDbCommand:

oleDbInsertCommand1 = new System.Data.OleDb.OleDbCommand(oleDbCommand,oleDbConnection1);

После этого снова открываем соединение, которое было закрыто в Page_Load и выполняем запрос:

oleDbConnection1.Open();

int queryResult=oleDbInsertCommand1.ExecuteNonQuery();

Метод ExecuteNonQuery( ) возвращает целое число, определяющее, сколько строк таблицы были изменены запросы. Если оно равно 1, то это означает, что вставка была успешной.  Если это так, то помещаем сообщение об успешном выполнении в объект Label, выполняем новый запрос для повторного заполнения ZacTabel и множества данных новым списком заказов.

if(queryResult==1)

{

Result.Text=»Данные добавлены»;

daTourist=new System.Data.OleDb.OleDbDataAdapter(«SELECT * FROM Tourist»,oleDbConnection2);

ds.Clear();

daTourist.Fill(ds,»Tourist»);

ZacTable=ds.Tables[«Tourist»];

}

Если ExecuteNonQuery( ) возвращает число отличное от единицы, то это говорит о том, что возникла проблема и выводится соответствующее сообщение в объект Label.

Result.Text = «Даннные не добавлены из — за проблем доступа к базе данных.»;

И в конце снова закрываем соединение:

oleDbConnection1.Close();

Элементы DataGrid, Repeater, DataList полезны при выводе данных на Web  страницу, так как они автоматически выполняют многие задачи, которые иначе потребовали бы большого объема кодирования.

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

Добавьте следующие строки в файл *. аspx. Перед тегом </form>

<asp:DataGrid Runat=server ID=»TourDetail»/>

А следующий код добавьте в Page_Load в Файле *.aspx.cs TourDetail.DataSource = ZacTable;

if (!this.IsPostBack)

{

Calendar1.SelectedDate = System.DateTime.Now;

this.DataBind();

}

else

{

TourDetail.DataBind();

}

Загрузите приложение в браузер Web.

САМОСТОЯТЕЛЬНО:

  • Создайте страницы Asp для предметной области вашего варианта.
  • Индивидуальное задание уточнить у преподавателя.

КОНТРОЛЬНЫЕ ВОПРОСЫ: