
Проект Чат
Проект Запрос SQL
Проект Совет дня
Проект Полезные ссылки
Сначала в процедуре проверяется, не используется ли введенный посетителем чат-псевдоним. Делается это посредством вызова метода BinarySearch объекта Аг-rayList. В качестве параметров данному методу передаются искомый текст (в нашем случае — введенное имя) и условие, что при поиске не учитывается регистр клавиатуры. Другими словами, текст «Боб» будет соответствовать тексту «БОБ».
Метод возвращает позицию найденного текста в массиве. Если текст не был найден, возвращается отрицательное число. Следовательно, числа от нуля и выше свидетельствуют о том, что чат-псевдоним найден:
If ChatNames.BinarySearch _
(txtChatName.Text, New CaselnsensitiveComparer) >= 0 Then
В этом случае текст сообщения об ошибке присваивается свойству Text элемента Label:
IblMessage.Text = " Введенное имя уже используется " _
& "другим участником чата."
Если текст не найден, выбранный посетителем чат-псевдоним можно использовать и этот псевдоним добавляется в объект ArrayList:
ChatNames.Add(txtChatName.Text)
После отправки сообщения необходимо сохранить чат-псевдоним участника в переменной сеанса, использующейся на странице Нижний кадр:
Session("ChatName") = txtChatName.Text
Когда очередной участник присоединяется к чату, нужно добавить новую запись в таблицу Chats. Следовательно, надлежит установить соединение с базой данных:
DBConn = New OleDbConnection("Provider=sqloledb;" __
& "server=localhost;" _
& "Initial Catalog=INETC13;" _
& "User Id=sa;" _
& "Password=yourpassword; ")
Затем текст SQL-запроса помещается в объект Command для добавления сообщения, адресованного сервером всем участникам, в таблицу Chats. Это сообщение используется для оповещения всех собеседников о том, кто присоединился к их числу:
DBInsert.CommandText = "Insert Into Chats " _
& "(WhenEntered, EnteredBy, EnteredTo, TheMessage) " _
& "values (" _
& " ' " & Now ()&"',"_
& " ' Сервер', " _
& " ' Всем', " _
& '"<B>" & Session("ChatName") & " вошел " _
& "в чат.</В>')"
Для выполнения запроса используется объект Connection:
DBInsert.Connection = DBConn
DBInsert.Connection.Open
После этого запись добавляется в таблицу:
DBInsert.ExecuteNonQuery()
Следующий шаг — фиксация в таблице Chats записи, начиная с которой новый участник присоединился к чату. Эта запись только что была добавлена в базу и определяется по своему ID:
DBCommand = New OleDbDataAdapter _
("Select Max(ChatlD) as MaxID "
& "from Chats " _
,DBConn)
Возвращаемый запрос помещается в объект DataSet:
DBCommand.Fill(DSStartingPoint, _
"StartingPoint")
Затем ID записи сохраняется в переменной сеанса, чтобы это значение можно было использовать на странице Основной кадр:
Session("StartingPoint") = DSStartingPoint.Tables("StartingPoint"). _
Rows(0).Item("MaxID")
Далее посетитель направляется на страницу Чат:
Response.Redirect("./chat.aspx")
Страница Чат
На странице Чат заданы два кадра. При загрузке страницы выполняется следующий блок кода:
Sub Page_Load(ByVal Sender as Object, ByVal E as EventArgs)
If Len(Session("ChatName")) = 0 Then
Response.Redirect("./index.aspx")
End If
End Sub
В коде проверяется факт регистрации участника чата:
If Len(Session("ChatName")) = 0 Then
Если участник не зарегистрирован, он направляется на страницу Регистрация. Это предотвращает просмотр сообщений чата без предварительной регистрации.
|