O Gua Prático ASP - Net Com SQL Server 2008
O Gua Prático ASP - Net Com SQL Server 2008
O Gua Prático ASP - Net Com SQL Server 2008
Portugal/2008
Pedro Remoaldo
[email protected]
www.centroatlantico.pt
Impresso e acabamento: Inova
1 edio: Outubro de 2008
ISBN: 978-989-615-070-9
Depsito legal:
/08
Marcas registadas: Todos os termos mencionados neste livro conhecidos como sendo marcas
registadas de produtos e servios foram apropriadamente capitalizados. A utilizao de um termo neste livro no deve ser encarada como afectando a validade de alguma marca registada
de produto ou servio.
O Editor e os Autores no se responsabilizam por possveis danos morais ou fsicos causados
pelas instrues contidas no livro nem por endereos Internet que no correspondam s Home-Pages pretendidas.
ndice
PREFCIO
13
Introduo .......................................................................................................... 13
Pblico-alvo e pr-requisitos .................................................................................. 14
Caractersticas principais do livro........................................................................... 14
Convenes usadas............................................................................................... 14
Viso geral e Organizao ..................................................................................... 15
SOBRE O AUTOR
17
19
1.6 ASP.NET.......................................................................................................... 29
41
CENTRO ATLNTICO COLECO TECNOLOGIAS O GUIA PRTICO DO ASP.NET COM SQL SERVER 2008
4 AMBIENTE DE TRABALHO
71
4.3 Ajuda
.......................................................................................................... 86
89
NDICE
6 CSS
113
139
8 ELEMENTOS DE NAVEGAO
171
9 FORMULRIOS E VALIDAES
195
CENTRO ATLNTICO COLECO TECNOLOGIAS O GUIA PRTICO DO ASP.NET COM SQL SERVER 2008
241
NDICE
305
351
10
CENTRO ATLNTICO COLECO TECNOLOGIAS O GUIA PRTICO DO ASP.NET COM SQL SERVER 2008
13 CONFIGURAO DE APLICAES
407
417
14.4 SQL
........................................................................................................ 445
11
NDICE
15 ADO.NET
469
15.4 Inserir, alterar dados e alterar a estrutura da base de dados ....................... 485
15.4.1 Adicionar novas linhas a uma tabela ............................................................ 486
15.4.2 Actualizar valores e eliminar linhas............................................................... 488
505
17 MANIPULAO DE DADOS
577
12
CENTRO ATLNTICO COLECO TECNOLOGIAS O GUIA PRTICO DO ASP.NET COM SQL SERVER 2008
18 GESTO DE ESTADOS
625
19 CONTROLO DE ACESSOS
663
Prefcio
Introduo
O desenvolvimento de stios Web, partilhado, entre outros, por informticos,
designers, arquitectos de informao e profissionais de marketing, tem sido
uma das actividades que mais alteraes tem sofrido ao longo dos seus poucos anos de existncia. As pginas Web foram sempre evoluindo, passando
de estticas para interactivas e depois para dinmicas, podendo ser personalizadas para cada visitante do site e suportadas por sofisticados acessos a
bases de dados.
A Microsoft, embora tendo entrado tardiamente no negcio da Internet, cedo
tentou recuperar o tempo perdido. Com o aparecimento das Active Server
Pages (ASP), os programadores Windows passaram a ter uma tecnologia
ideal para a criao de sites Web dinmicos. No contente com este sucesso,
a Microsoft resolveu reinventar os ambientes de desenvolvimento de aplicaes, lanando no incio da dcada a .NET Framework.
O ASP.NET representa a aplicao desta framework ao desenvolvimento de
pginas Web e de web services, sendo uma verdadeira revoluo relativamente s Active Server Pages. E com cada nova verso do ASP.NET e da
.NET Framework a Microsoft tem apresentado melhorias significativas.
Mas sem um ambiente integrado de desenvolvimento, seria muito complicada
a criao de sites Web utilizando o ASP.NET. Para resolver esse problema a
Microsoft disponibiliza o Visual Studio e o Visual Web Developer, verdadeiros
IDE (Integrated Development Environment) que possuem todas as ferramentas que um web developer pode necessitar.
Finalmente, a utilizao de bases de dados para a produo de sites Web
dinmicos ficou mais facilitada com a disponibilizao do SQL Server Express,
uma verso gratuita do SQL Server. Considerado um dos melhores sistemas
de gesto de bases de dados existentes no mercado, o SQL Server, na sua
verso Express, uma soluo poderosa para o desenvolvimento Web.
14
CENTRO ATLNTICO COLECO TECNOLOGIAS O GUIA PRTICO DO ASP.NET COM SQL SERVER 2008
Pblico-alvo e pr-requisitos
Este livro destinado a todos os web developers, existentes ou potenciais,
que pretendam utilizar tecnologias recentes na criao de stios Web interactivos e dinmicos. especialmente orientado para os web developers que utilizem tecnologias Microsoft.
Embora seja recomendada alguma experincia ao nvel do desenho de pginas Web, da utilizao de linguagens de programao e da manipulao de
bases de dados, o livro pretende ser acessvel a qualquer pessoa que tenha
interesse no desenvolvimento de stios Web.
Convenes usadas
Este livro utiliza diversas convenes com vista a facilitar a assimilao da
informao:
Termos em ingls so apresentados, de uma forma geral, em itlico:
" ... que definem propriedades para estilos inline e para o atributo ..."
"... redimensionar o controlo recorrendo s respectivas handles."
O cdigo encontra-se formatado em Courier New:
Try
paises.Items.Clear()
While dr1.Read()
paises.Items.Add(dr1.GetSQLString(0))
End While
15
PREFCIO
16
CENTRO ATLNTICO COLECO TECNOLOGIAS O GUIA PRTICO DO ASP.NET COM SQL SERVER 2008
Sobre o Autor
Pedro Remoaldo
Pedro Remoaldo licenciado em Informtica, formador e consultor em sistemas
e tecnologias de informao com perto de uma dcada de experincia como
docente no ensino superior.
Autor de 16 livros sobre sistemas operativos, software aplicacional, Internet,
desenvolvimento Web e segurana, dos quais os 9 ttulos mais recentes foram
publicados pelo Centro Atlntico.
Os seus interesses so bastante abrangentes, mas atribui particular ateno s
tecnologias Internet, aos sistemas de gesto de bases de dados e ao Business
Intelligence.
17 Manipulao de dados
610
CENTRO ATLNTICO COLECO TECNOLOGIAS O GUIA PRTICO DO ASP.NET COM SQL SERVER 2008
611
Este atributo enctype possui, por omisso, o valor application/x-wwwform-urlencoded, que um tipo de codificao ineficiente para enviar
grandes quantidades de dados binrios, ou texto que contenha caracteres
no-ASCII. Por isso que se utiliza o tipo de codificao multipart/formdata que contm uma srie de partes (da o nome), cada uma das quais se
refere a um controlo do formulrio.
Quando o formulrio submetido, o servidor recebe o(s) ficheiro(s) e cabe ao
cdigo ASP.NET examinar, ignorar ou guardar esse(s) ficheiro(s). Pode-se
guardar os ficheiros em disco ou numa base de dados.
No servidor, para obtermos informao sobre o ficheiro submetido temos de
utilizar a classe FILEUPLOAD e as seguintes propriedades:
FILEBYTES contedo do ficheiro como um array de bytes.
FILECONTENT contedo do ficheiro como uma stream, permitindo assim a sua leitura.
FILENAME nome original do ficheiro.
HASFILE devolve TRUE se um ficheiro tiver sido transferido, ou FALSE
caso contrrio.
POSTEDFILE permite aceder a um objecto HTTPPOSTEDFILE que possui informao sobre um ficheiro transferido.
Utilizando a propriedade POSTEDFILE temos acesso a propriedades adicionais
sobre o ficheiro transferido:
CONTENTLENGTH tamanho do ficheiro em bytes.
CONTENTTYPE MIME type do ficheiro transferido, isto , o tipo de
ficheiro (imagem, documento, etc.)
FILENAME fully qualified name do ficheiro, isto , o nome do ficheiro
bem como a sua localizao completa no computador do visitante, do
tipo c:\ficheiros\imagens\ca.gif
INPUTSTREAM Permite obter o contedo do ficheiro como uma
stream, permitindo assim a sua leitura.
A classe HTTPFILECOLLECTION disponibiliza acesso, como uma coleco de
ficheiros, a todos os ficheiros que so transferidos. Caso a pgina permita a
transferncia de mais de um ficheiro (recorrendo a vrios controlos FILEUPLOAD), ento esta coleco pode ser percorrida para obter informao sobre
cada um dos ficheiros. Por exemplo:
Dim listaFicheiros As HttpFileCollection = Request.Files
For Each ficheiro As String In listaFicheiros.AllKeys
' Se o ficheiro no tiver tamanho 0
If (listaFicheiros(ficheiro).ContentLength > 0) Then
' Fazer algo com o ficheiro
612
CENTRO ATLNTICO COLECO TECNOLOGIAS O GUIA PRTICO DO ASP.NET COM SQL SERVER 2008
613
Neste caso utilizamos um valor inteiro (1, 2, 3, ...) que colocamos no incio do
nome original. Teremos assim nomes do tipo 1computador.gif,
2computador.gif, etc. O mtodo SYSTEM.IO.FILE.EXISTS permite determinar
se um dado ficheiro existe numa pasta do disco.
Outra possibilidade a testar apenas aceitar determinados tipos de ficheiros.
No exemplo seguinte criamos uma funo que apenas permite a transferncia
de imagens:
Private Function TipoFicheiro(ByVal nomeficheiro As String) As
Boolean
Dim extensao As String =
System.IO.Path.GetExtension(nomeficheiro)
Select Case extensao.ToLower()
Case ".gif", ".png", ".jpg", ".jpeg"
Return True
Case Else
lblMensagem.Text = "O ficheiro transferido no
uma imagem!"
Return False
End Select
End Function
Em vez de extrairmos a extenso do ficheiro o mais adequado obter o respectivo MIME type recorrendo propriedade CONTENTTYPE:
Private Function TipoFicheiro(ByVal tipo As String) As Boolean
Select Case tipo
Case "image/gif", "image/png", "image/x-png",
"image/jpeg", "image/pjpeg"
Return True
Case Else
lblMensagem.Text = "O ficheiro transferido no
uma imagem!"
Return False
End Select
End Function
...
Dim pastaFicheiro as String = pasta & nome_ficheiro
Dim nome_ficheiro as String = ficheiro.FileName
614
CENTRO ATLNTICO COLECO TECNOLOGIAS O GUIA PRTICO DO ASP.NET COM SQL SERVER 2008
Podemos guardar o ficheiro onde quisermos. Porm, para evitar obter erros
access denied quando se tenta guardar ficheiros directamente numa pasta
da sua aplicao Web, temos de verificar as permisses.
Assegure-se que o directrio virtual no IIS possui permisses de leitura e
escrita. Para guardar um ficheiro no file system do servidor, a conta Windows
associada com a pgina ASP.NET tem de possui permisses suficientes. No
caso do Windows XP (verso 5 do IIS) a conta ASPNET. Nas verses posteriores do IIS (Windows Vista e Windows Server 2003/2008) a conta NETWORK SERVICE.
No Windows Explorer, clique com o boto direito do rato na pasta onde pretende guardar os ficheiros, seleccione a opo PROPERTIES e depois o separador SECURITY. Clique no boto EDIT, depois no boto ADD, escreva NETWORK
SERVICE (ou ASPNET, conforme o sistema operativo) na caixa ENTER THE
OBJECT NAMES TO SELECT, clique em OK, e depois atribua a permisso WRITE
na coluna ALLOW da lista PERMISSIONS FOR NETWORK SERVICE.
615
616
CENTRO ATLNTICO COLECO TECNOLOGIAS O GUIA PRTICO DO ASP.NET COM SQL SERVER 2008
/>
617
nome que o ficheiro possua quando foi uploaded (tipo de dados varchar). Pode ser utilizado quando um visitante solicitar posteriormente
o download do ficheiro.
De forma a exemplificarmos a insero de ficheiros em bases de dados SQL,
vamos alterar a estrutura da nossa tabela livros, acrescentando um novo
campo, excerto, do tipo varbinary(MAX), que vai conter um ficheiro PDF
com um excerto de cada livro:
Repare que vamos utilizar dois controlos do tipo FILEUPLOAD. No existe limite
relativamente ao nmero de controlos deste tipo que se podem utilizar em
pginas Web, se bem que quantos mais controlos utilizar mais lento ser o
processamento da pgina.
No controlo SQLDATASOURCE associado a este formulrio vamos efectuar a
seguinte alterao ao comando SQL:
618
CENTRO ATLNTICO COLECO TECNOLOGIAS O GUIA PRTICO DO ASP.NET COM SQL SERVER 2008
619
Se quiser pode introduzir, na caixa HEADER TEXT, o texto que deve aparecer no
cabealho da coluna na GRIDVIEW. A seguir, na rea HYPERLINK TEXT introduza
o texto que pretende que aparea no link:
Finalmente, na rea HYPERLINK URL, seleccione a opo GET URL FROM DATA
e depois seleccione a coluna/campo codlivro na lista:
FIELD
Isto significa que sempre que se clicar no link Excerto ser invocada a
pgina processaficheiro.ashx, e passada a essa pgina, como parmetro, o valor da coluna/campo codlivro do livro seleccionado. Neste caso,
o nome do parmetro (codlivro) idntico ao nome da coluna/campo da
tabela livros, mas isso no obrigatrio.
Para enviar para o visitante de um site um ficheiro que est armazenado na
base de dados, temos de recorrer a um ficheiro HTTP Handler (que possui a
extenso .ashx). Para criar um ficheiro deste tipo seleccione a opo FILE >
NEW FILE (ou ADD NEW ITEM no menu de contexto do site no painel SOLUTION
EXPLORER) e, na caixa de dilogo ADD NEW ITEM, seleccione o template
www.centroatlantico.pt