Языки

» Html
» Java Script

» PHP

» Perl

» ASP

» CGI

» Xml

» Dhtml

» VBScript

» Java

» Css

Уроки

» Photoshop

» Corel Draw

» Dreamwawer

» Flash MX

Скачать

» Программы

» Книги

Шаблоны

» Сайтов

» Flash

» Скрипты

Active Server Pages

  » ASP для новичков

     » Главная страница

     » ASP для новичков

Ввод данных с Web-страницы

Для начала нам придется разработать Web-страницу, при помощи которой пользователи смогут ввести информацию о себе в нашу базу данных. Этой Web-странице мы присвоим наименование "insert.aspx". На ней следует разместить поля текстового ввода и одну группу кнопок переключателей, при помощи которой пользователь будет указывать свой пол. Следовало бы также разместить на этой странице и механизм проверки достоверности, для контроля соответствия введенных данных установленным форматам. Иначе говоря, адрес электронной почты должен хотя бы соответствовать правилам написания этих адресов, а возраст должен быть целым положительным числом, находящимся в разумных рамках (допустим от 14 до 85), но не стоит в данном случае так сильно нагружать страницу органами управления. Как их использовать мы уже знаем, поэтому оставим маленький пример без них.

Итак, HTML-код Web-страницы в режиме разработки приведен в листинге 4.1.

Листинг 4.1 

<%@ Page Language="vb" AutoEventWireup="false"

Codebe-hind="insert.aspx.vb" Inherits="datingiWebForml"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD

HTML 4.0 Transitional//EN">

<HTML>

<HEAD>

<title>

</title>

<meta name="GENERATOR" content="Microsoft Visual Studio.NET 7.0">

<meta name="CODE_LANGUAGE" content="Visual Basic 7.0">

<meta name="vs_defaultClientScript" content="JavaScript">

<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">

</HEAD>

<body ms_positioning="GridLayout">

<form id="Forml" method="post" runat="server">

<asp:Label id="Labell" style="Z-INDEX: 101; LEFT: 49px;

POSITION: absolute; TOP: 20px" runat="server" Width="215px" Height="19px">BBeflMTe персональные данные</азр:Label>

<asp:Label id="Labe!2" style="Z-INDEX: 102; LEFT: 49px;

POSITION: absolute; TOP: 49px" runat="server">MMH</asp:Label>

<asp:TextBox id="TextBoxl" style="Z-INDEX: 103; LEFT: 49px;

POSITION: absolute;

TOP: 78px" runat="server" Width="221px" Height="24px"x/asp:TextBox>

<asp:Label id="Label3" style="Z-INDEX: 104; LEFT: 49px;

POSITION: absolute; TOP: 114px" runat="server">non</asp:Label>

<asp:RadioButtonList id="RadioButtonListl" style="Z-INDEX: 105; LEFT: 49px;

POSITION: absolute; TOP: 143px" runat="server">

<asp:List!tem Value="0" Selected="True">Жeнcкий</asp:ListItem> <asp:List!tem Value="l">Mya;cKoft</asp:ListItem> </asp:RadioButtonList>

<asp:Label id="Labe!4" style="Z-INDEX: 106; LEFT: 49px;

POSITION: absolute; TOP: 203px" runat="server">AЈpec электронной no4Tfci</asp:Label>

<asp:TextBox id="TextBox2" style="Z-INDEX: 107; LEFT: 49px;

POSITION: absolute;

TOP: 232px" runat="server"x/asp:TextBox>

<asp:Label id="Labe!5" style="Z-INDEX: 108; LEFT: 282px;

POSITION: absolute;

TOP: 46px" runat="server">Bo3pacT</asp:Label>

<asp:TextBox id="TextBox3" style="Z-INDEX: 109; LEFT: 284px;

POSITION: absolute; TOP: 79px" runat="server"x/asp:TextBox>

<asp:Label id="Labe!6" style="Z-INDEX: 110; LEFT: 49px;

POSITION: absolute; TOP: 266px" runat="server">Дoпoлнитeльнaя информация</азр:ЬаЬе1>

<asp:TextBox id="TextBox4" style="Z-INDEX: 111; LEFT: 49px;

POSITION: absolute;

TOP: 295px" runat="server" Width="355px" Height="58px" TextMode="MultiLine"x/asp: TextBox>

<asp:Button id="Buttonl" style="Z-INDEX: 112; LEFT: 49px;

POSITION: absolute;

TOP: 370px" runat="server" Width="130px" Height="24px" Text="noflTBepfl>iTb "X/asp: Button>

</form>

 </body>

</HTML>

Но эта Web-страница пока еще мертва. Необходимо написать исполняемый код для нее. Идеологически все достаточно просто. Требуется собрать введенные данные, а затем подставить их в SQL-запрос insert. Еще раз оговорюсь, что в этой главе не будет рассматриваться синтаксис языка SQL, поэтому достаточно будет лишь напомнить, что этот оператор SQL позволяет добавлять данные в таблицы.

Перед тем, как рассматривать механизм соединения с базой данных и выполнения SQL-запросов, приведем листинг кода, реализующего класс создаваемой Web-страницы. Это листинг 4.2.

 Листинг 4.2

Public Class WebForml

Inherits System.Web.UI.Page

Protected WithEvents Labell As System.Web.UI.WebControls.Label

Protected WithEvents Label2

As System.Web.Ul.WebControls.Label Protected WithEvents TextBoxl

As System.Web.UI.WebControls.TextBox Protected WithEvents Label3

As System.Web.UI.WebControls.Label

Protected WithEvents RadioButtonListl

As System.Web.UI.WebControls.RadioButtonList

Protected WithEvents Label4 As System.Web.UI.WebControls.Label

Protected WithEvents TextBox2 As System.Web.Ul.WebControls.TextBox

Protected WithEvents Labels As System.Web.UI.WebControls.Label

Protected WithEvents TextBox3 As System.Web.Ul.WebControls.TextBox

Protected WithEvents Label6 As System.Web.Ul.WebControls.Label

Protected WithEvents TextBox4 As System.Web.Ul.WebControls.TextBox

Protected WithEvents Buttonl As System.Web.UI.WebControls.Button

#Region " Web Form Designer Generated Code "

'This call is required by the Web Form Designer.

<System.Diagnostics.DebuggerstepThrough()> Private Sub InitializeComponent()

End Sub

Private Sub Page_Init(ByVal sender

As System.Object, ByVal

e As System.EventArgs) Handles MyBase.Init

'CODEGEN: This method call is required by the Web Form Designer

 'Do not modify it using the code editor. InitializeComponent() End Sub

#End Region

Private Sub Page_Load(ByVal sender

As System.Object, ByVal

e As System.EventArgs) Handles MyBase.Load

'Put user code to initialize the page here End Sub

Private Sub Buttonl_Click(ByVal sender

As System.Object, ByVal

e As System.EventArgs) Handles Buttonl.Click

Dim DataConnection As Data.SqlClient.SqlConnection

DataConnection = New Data.SqlClient.SqlConnection ("server=(LOCAL);

uid=sa;

pwd=;

database=Dating")

Dim DataCommand As Data.SqlClient.SqlCommand

Dim InsertCmd As String = "insert into Dating (USNAME, SEX, \ EMAIL, ABOUT, AGE)

values OUsname, @Sex, @Email, gAbout, @Age)"

DataCommand = New Data.SqlClient.SqlCoramand(InsertCmd, DataConnection)

DataCornmand. Parameters .Add (New I Data.SqlClient.SqlParameter("OUsname", System.Data.SqlDbType.NVarChar, ) )

DataCommand.Parameters("@Usname").Value = TextBoxl.Text

DataCommand.Parameters.Add(New fData.SqlClient.SqlParameter("@Sex", System.Data.SqlDbType.Int, 2))

DataCommand.Parameters("@Sex").

Value = RadioButton-;'Listl.SelectedIndex

DataCommand.Parameters.Add(New Data.SqlClient.SqlParameter("@Email", System.Data.SqlDbType.NChar, 50))

DataCommand.Parameters("@Email").Value = TextBox2.Text

DataCommand.Parameters.Add(New

Data.SqlClient.SqlParameter("gAbout", System.Data.SqlDbType.NVarChar, 1000»

DataCommand.Parameters("@About").Value = TextBox4.Text

DataCommand.Parameters.Add(New Data.SqlClient.SqlParameter("@Age", System.Data.SqlDbType.Int, 2))

DataCommand.Parameters("@Age").Value = Val(TextBox3.Text)

DataCommand.Connection.Open()

Try

DataCommand.ExecuteNonQuery()

Response.Redirect("Success.aspx") Catch Exp As Data.SqlClient.SqlException

Response.Redirect("failed.aspx") End Try DataCommand.Connection.Closed

End Sub

End Class

Теперь рассмотрим созданный обработчик нажатия пользователем кнопки. Для работы нам потребуется экземпляр класса Data.sqiciient.sqiconnection, который позволяет устанавливать соединение с SQL-сервером, и экземпляр Класса Data.SqlClient.SqlCommand, позволяющий выполнять SQL-запросы.

После того, как мы объявили экземпляр класса Data.sqiciient.

Sqiconnection с наименованием DataConnection, следует его создать. Для этого мы используем конструктор Data.SqlClient.SqlConnection, котоpому в качестве параметров передается строка, содержащая параметры для установки соединения с базой данных. Из листинга видно, что данная строка состоит из пар "имя=значение", отделенных друг от друга символами точки с запятой. Параметр server позволяет указывать наименование SQL-сервера, к которому производится присоединение. Так как в нашем примере мы используем локальный сервер, который регистрируется в системе автоматически при инсталляции Microsoft SQL Server 2000, то мы используем значение "(LOCAL)".

Затем при помощи параметра uid мы указываем регистрационное имя, под которым происходит присоединение к серверу. Для этого параметра мы используем значение за, которое указывает на встроенную учетную запись администратора. Пароль для этого регистрационного имени указывается при помощи параметра pwd, и в нашем случае этот пароль является пустым. Следует отметить, что подобное подключение к SQL-серверу возможно только в том случае, если тот поддерживает встроенную авторизацию, а не использует авторизацию пользователей, основанную на механизмах идентификации Windows NT. Для того чтобы узнать на какой именно механизм авторизации опирается SQL-сервер, следует в конфигурационной утилите SQL Server Enterprise Manager выделить элемент, соответствующий серверу, и в контекстном меню выполнить команду Edit SQL Server Registration properties (Редактор свойств регистрации SQL-сервера). При этом будет активировано диалоговое окно Registered SQL Server Properties (Свойства регистрации SQL-сервера), показанное на рис. 4.7. В том случае, если действует собственная аутентификация SQL-сервера, должна быть активирована кнопка-переключатель Use SQL Server authentication (Использовать аутентификацию SQL-сервера). Естественно, в этом случае необходимо указать регистрационное имя и пароль для учетной записи, проходящей аутентификацию, в полях Login Name (Регистрационное имя) и Password (Пароль), соответственно.

Примечание

Следует осознавать, что в реальных условиях не следует использовать учетную запись с именем входа " за", так как она общеизвестна, и при определенных условиях злоумышленники могут получить доступ к SQL-серверу, и, воспользовавшись этой учетной записью, полностью изменить структуру баз данных. Поэтому, если нет возможности обойтись без этой встроенной учетной записи, следует установить для нее максимально длинный и сложный пароль. Однако стоит помнить, что любые пароли вскрываемы, поэтому при первой же возможности стоит избавляться от всех учетных записей, устанавливаемых по умолчанию, так как они общеизвестны.

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

После того, как было создано соединение с SQL-сервером, следует подготовить для выполнения SQL-запрос. В нашем случае SQL-запрос будет выполнять команду insert, следовательно, никаких наборов данных от этого запроса мы не получим. Для выполнения запроса будет использован экземпляр класса sqicommand. рднако, для него еще необходимо подготовить саму строку, содержащую команду SQL. Для этого используется переменная InsertCmd тип3 String.

В этой строке записывается текст выполняемого SQL-запроса. Так как следует явно указывать значения полей в этой строке, у нас есть два варианта действий. Либо пользуясь данными, введенными пользователем, генерировать эту строку, либо сразу задать текст запроса, но так как нам заранее неизвестны подставляемые значения, воспользоваться параметрами. В нашем примере мы воспользовались вторым способом. При этом строка SQL-запроса приобрела следующий вид:

insert into Dating (USNAME, SEX, EMAIL, ABOUT, AGE)

values (@Usname, @Sex, @Email, @About, 8Age)

Видно, что вместо конкретных значений, сохраняемых в таблице Dating, в строке запроса указаны наименования параметров, начинающиеся с символа @. Для доступа к этим параметрам следует использовать коллекцию Parameters, входящую в состав класса sqicommand. Для каждого параметра мы используем метод Add, который добавляет его в коллекцию. В качестве параметра этому методу передается конструктор класса sqiParameter, который реализует сами параметры SQL-запросов.

Однако перед тем как задать значения этих параметров, следует создать экземпляр класса sgicommand. При этом в качестве параметров передается строка, содержащая текст запроса, и переменная, отвечающая за соединение с SQL-сервером.

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

После того, как все параметры добавлены, следует выполнить подготовленный запрос. Для этого сначала следует открыть подготовленное соединение с SQL-сервером. Поэтому используется метод open, применяемый к свойству Connection, входящему в состав класса sqicoimand. А затем, после того, как соединение открыто, следует выполнить сам SQL-запрос. Для этого мы можем использовать метод ExecuteNonQuery. Однако в нашем примере мы не просто вызываем этот метод, а при помощи конструкции Try ... catch ... End Try подстраховываем себя на случай возникновения каких-либо нештатных ситуаций. В том случае, когда не возникает никаких исключений, пользователь переадресуется на страницу Success.aspx. А если системой было инициировано исключение, пользователь оповещается об этом при помощи переадресации на страницу failed.aspx.

После выполнения запроса следует закрыть соединение при помощи метода close, применяемого к свойству connection, входящему в состав класса sqicommand. На этом работа фрагмента Web-приложения, отвечающего за добавление данных в таблицу, заканчивается. Прежде чем мы перейдем к рассмотрению остальных частей Web-приложения, рассмотрим структуру классов SqlConnection И SqlCommand.

Сохранить документ

Сохранить документ (.doc)

Распечатать документ

Напечатать

 

Следующий урок


Общение
» Чат

» Форум

Реклама 

Здесь может быть Ваша реклама

Поиск

» Поиск

Статистика 

Связь
» Web дизайнер

» Ваша реклама

» Отзывы

» О проекте

 



Сайт управляется системой uCoz