
Проект Чат
Проект Запрос SQL
Проект Совет дня
Проект Полезные ссылки
Проект Совет дня
Приложение Совет дня отображает текст совета дня. Хотя совет можно выводить на любую страницу, мы помещаем таковой на страницу Совет дня.
При рассмотрении этого приложения обратите внимание на использование объекта Random с целью получения случайного числа для выбора совета.
Описание проекта
Страница Совет дня показана на рис. Совет состоит из заголовка и текста. Один и тот же совет используется при каждом просмотре страницы до изменения даты на сервере. После изменения даты отобразится новый, произвольно выбранный, совет.
База данных проекта
Таблица базы данных проекта хранит заголовок и текст совета. Обзор полей таблицы Tips дан в табл.

Страница Совет дня
Поля таблицы Tips (файл Tips.txt)
Имя поля |
Тип данных |
Примечания |
TIpID |
int |
Первичный ключ, уникальный идентификатор |
TlpTitle |
varchar |
Заголовок совета. Длина — 50 символов |
TipText |
varchar |
Текст совета. Длина — 255 символов |
Код проекта
Код проекта Совет дня состоит из одной ASP.NET-страницы, которая будет описана в этом разделе.
Страница Совет дня
Код на странице Совет дня предназначен для отображения текущего совета и произвольного извлечения совета при изменении даты.
Элемент управления Label используется для отображения текста заголовка:
<asp: Label
id="lblTitle"
BorderWidth="5px"
Borders tyle=6
Width=" 90%"
Font-Size="25pt"
Font-Name="Trebuchet MS"
Text="<CENTER>CoBei дня</СЕМТЕК>"
runat=" server"
Еще один элемент Label служит для отображения текста совета:
<asp: Label
id="lblMessage"
BorderWidth="3px"
BorderStyle=6
Font-Size="12pt"
Font-Name="Trebuchet MS"
Width="40%"
runat="server"
/>
Код страницы содержит единственную процедуру, которая выполняется при загрузке страницы:
Sub Page_Load(ByVal Sender as Object, ByVal E as EventArgs)
Dim DBConn as OleDbConnection
Dim DBCommand As OleDbDataAdapter
Dim DSTip as New DataSet
Dim MyRandom as New Random()
Dim RowNumber as Long
If Len(Application("TipDate")) = 0 Then
Application("TipDate") = Today()
DBConn = New OleDbConnection("Provider=sqloledb;" _
& "server=localhost;" _
& "Initial Catalog=INETC13;"
& "User Id=sa;" _
& "Password=yourpassword;")
DBCommand = New OleDbDataAdapter _
("Select TipTitle, TipText from " _
& "Tips",DBConn)
DBCommand.Fill(DSTip, _
"Tips")
RowNumber = MyRandom.Next _
(0, DSTip.Tables("Tips").Rows.Count)
Application("CurrentTip") = "<B>" _
& DSTip.TablesC'Tips").Rows(RowNumber).Item("TipTitle") _
& "</BÞБBR>" _
& DSTip.Tables("Tips").Rows(RowNumber).Item("TipText")
Elself Application("TipDate") <> TodayO Then
Application("TipDate") = TodayO
DBConn = New OleDbConnection("Provider-sqloledb;" _
& "server=localhost;" _
& "Initial Catalog=INETC13;"
& "User Id=sa;" _
& "Password=yourpassword;")
DBCommand = New OleDbDataAdapter _
("Select TipTitle, TipText from " _
& "Tips",DBConn)
DBCommand.Fill(DSTip, _
"Tips")
RowNumber = MyRandom.Next _
(0, DSTip.Tables("Tips").Rows.Count)
Application("CurrentTip") = "<B>" _
& DSTip. Tables ("Tips") .Rows (RowNumber) . Item ("TipTitle".) _
& "</B><BR>" _
& DSTip.Tables("Tips").Rows(RowNumber).Item("TipText")
End If
IblMessage.Text = Application("CurrentTip")
End Sub
В процедуре понадобятся объекты для работы с базой данных:
Dim DBConn as OleDbConnection
Dim DBCommand As OleDbDataAdapter
Dim DSTip as New DataSet
Помимо этого, потребуется объект Random для формирования случайного числа:
Dim MyRandom as New Random))
Данная переменная будет содержать случайное число, предназначенное для выбора отображаемого совета:
Прежде всего по наличию значения в этой переменной приложения осуществляется проверка того, запущено ли приложение:
If Len(Application("TipDate")) - 0 Then
Если приложение только что запущено, данной переменной присваивается текущая дата:
Application("TipDate") - Today()
Далее из базы данных извлекаются записи с данными советов:
DBCommand = New OleDbDataAdapter _
("Select TipTitle, TipText from " _
& "Tips",DBConn)
и передаются в объект DataSet:
DBCommand.Fill(DSTip, _
"Tips")
Затем необходимо случайным образом выбрать одну из записей. Для этого вызывается метод Next объекта Random. Первым параметром является наименьшее число, которое может быть получено (в данном случае — 0). Оно представляет собой наименьший номер строки в объекте DataSet. Второй параметр на единицу больше, чем максимально возможное число. Таким образом, если есть 10 записей с советами, диапазон случайных чисел будет составлять от 0 до 9. Произвольно выбранное число присваивается локальной переменной:
RowNumber = MyRandom.Next _
(О, DSTip.Tables("Tips").Rows.Count)
После этого в переменной приложения сохраняется запись с советом, имеющая упомянутый произвольный номер:
Application("CurrentTip") = "<В>" _
& DSTip.Tables("Tips").Rows(RowNumber).Item("TipTitle") _
& "</B><BR>" _
& DSTip.Tables("Tips").Rows(RowNumber).Item("TipText")
Далее проверяется, отличается ли текущая дата от даты первого отображения подсказки:
Elself Application("TipDate") <> Today() Then
Если дата изменилась, значит, нужно извлечь новую запись с советом. Вначале текущая дата помещается в переменную приложения:
Application("TipDate") = TodayO
Затем извлекается новая запись:
DBCommand - New OleDbDataAdapter _
("Select TipTitle, TipText from " _
& "Tips",DBConn)
DBCommand.Fill(DSTip, _
"Tips")
Вновь генерируется случайное число:
RowNumber= MyRandom.Next _
(О, DSTip.Tables("Tips").Rows.Count)
Application("CurrentTip") = "<B>" _
& DSTip.TablesC'Tips").Rows(RowNumber).Item("TipTitle") _
& "</B><BR>"
& DSTip.Tables("Tips").Rows(RowNumber).ItemC'TipText")
Если же дата не изменилась, новая запись не извлекается. Совет дня отображается в элементе Label:
IblMessage.Text - Application("CurrentTip")
|