Практическое занятие №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)
Рис. 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 для предметной области вашего варианта.
- Индивидуальное задание уточнить у преподавателя.
КОНТРОЛЬНЫЕ ВОПРОСЫ: