O gua prático ASP.net com SQL server 2008

download O gua prático ASP.net com SQL server 2008

of 30

Transcript of O gua prático ASP.net com SQL server 2008

  • 7/30/2019 O gua prtico ASP.net com SQL server 2008

    1/30

  • 7/30/2019 O gua prtico ASP.net com SQL server 2008

    2/30

  • 7/30/2019 O gua prtico ASP.net com SQL server 2008

    3/30

    PEDRO REMOALDO

    Portugal/2008

  • 7/30/2019 O gua prtico ASP.net com SQL server 2008

    4/30

    Microsoft is a registered trademark of Microsoft Corporation in the United Statesand/or other countries and is used by Centro Atlntico under license from owner. OGuia Prtico do ASP.NET com SQL Server 2008 is an independent publication notaffiliated with Microsoft Corporation.

    Reservados todos os direitos por Centro Atlntico, Lda.Qualquer reproduo, incluindo fotocpia, s pode ser feita com autorizao expressa dos editores da obra.

    OGUIAPRTICODOASP.NETCOMSQLSERVER2008

    Coleco: Tecnologias

    Autor: Pedro Remoaldo

    Direco grfica: Centro Atlntico

    Reviso tcnica: Centro Atlntico

    Capa: Paulo Buchinho

    Centro Atlntico, Lda., 2008

    Ap. 413 4764-901 V. N. Famalico

    Rua da Misericrdia, 76 1200-273 Lisboa

    Portugal

    Tel. 808 20 22 21

    [email protected]

    www.centroatlantico.pt

    Impresso e acabamento: Inova1 edio: Outubro de 2008

    ISBN: 978-989-615-070-9

    Depsito legal: /08

    Marcas registadas: Todos os termos mencionados neste livro conhecidos como sendo marcasregistadas de produtos e servios foram apropriadamente capitalizados. A utilizao de um ter-mo 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 causadospelas instrues contidas no livro nem por endereos Internet que no correspondam s Home--Pages pretendidas.

  • 7/30/2019 O gua prtico ASP.net com SQL server 2008

    5/30

    ndice

    PREFCIO 13Introduo .......................................................................................................... 13Pblico-alvo e pr-requisitos .................................................................................. 14Caractersticas principais do livro........................................................................... 14Convenes usadas............................................................................................... 14Viso geral e Organizao ..................................................................................... 15

    SOBRE O AUTOR 171DESENVOLVIMENTO DE SITESWEB 191.1 Pginas estticas ............................................................................................. 191.2 Pginas interactivas ......................................................................................... 201.3 Tecnologias client-side..................................................................................... 211.4 Pginas dinmicas ........................................................................................... 22

    1.4.1 Metodologia das trs camadas ......................................................................... 241.4.2 Ambientes de desenvolvimento e produo ..................................................... 25

    1.5 A .NET Framework ........................................................................................... 261.5.1 Arquitectura ...................................................................................................... 271.6 ASP.NET .......................................................................................................... 292VISUAL STUDIO E VISUAL WEB DEVELOPER EXPRESS ED. 312.1 Visual Studio .................................................................................................... 312.2 Visual Web Developer Express Edition ............................................................ 322.3 Instalar o Visual Web Developer ...................................................................... 332.4 Primeiro arranque ............................................................................................ 373CRIAR UM SITEWEB 413.1 Criar um site Web ............................................................................................ 423.2 Localizao de sites......................................................................................... 44

    3.2.1 Criar um site Web no File System .................................................................... 443.2.2 Criar um site Web IIS local ............................................................................... 463.2.3 Criar um site Web IIS remoto............................................................................ 53 3.2.4 Criar um site Web acessvel por FTP ............................................................... 543.2.5 Configurao de opes ................................................................................... 56

    3.3 Abrir um site existente ...................................................................................... 573.3.1 Abrir um site recentemente utilizado ................................................................. 573.3.2 Abrir um site...................................................................................................... 59

  • 7/30/2019 O gua prtico ASP.net com SQL server 2008

    6/30

    6 CENTRO ATLNTICO COLECO TECNOLOGIAS OGUIA PRTICO DO ASP.NET COM SQLSERVER 20083.4 Fechar projectos e alternar entre projectos ..................................................... 623.5 Visual Web Developer e aplicaes IIS ........................................................... 633.6 Solution Explorer ............................................................................................. 63

    3.6.1 Pastas especiais .............................................................................................. 663.7 Pginas Web ASP.NET ................................................................................... 663.7.1 Abrir pginas Web ASP.NET ........................................................................... 694AMBIENTE DE TRABALHO 714.1 Painis e barras de ferramentas ..................................................................... 75

    4.1.1 Painis ............................................................................................................. 754.1.2 Barras de ferramentas ..................................................................................... 794.1.3 Outros painis .................................................................................................. 79

    4.2 Alterar a disposio dos painis ...................................................................... 804.2.1 Esconder os painis ......................................................................................... 824.2.2 Personalizar as barras de ferramentas ............................................................ 834.2.3 Janela Documento ........................................................................................... 85

    4.3 Ajuda .......................................................................................................... 865CONTROLOS WEB E LAYOUTDE PGINAS 895.1TOOLBOX .......................................................................................................... 90

    5.1.1 Personalizar a TOOLBOX .................................................................................. 915.2 Layoutde pginas ........................................................................................... 93

    5.2.1 Flow layout....................................................................................................... 945.2.2 Two-Dimensional Positioning........................................................................... 945.2.3 Utilizar os tipos de layoutdisponveis .............................................................. 955.2.4 Rgua e grelha ................................................................................................ 97

    5.3 Estrutura de uma pgina ASP.NET ................................................................. 985.3.1 Colocar controlos em pginas Web ................................................................. 99

    5.4 Controlos HTML .............................................................................................. 995.4.1 Tabelas .......................................................................................................... 1005.4.2 Divs ................................................................................................................ 1015.4.3 Imagens ......................................................................................................... 1025.4.4 Links............................................................................................................... 1025.4.5 Transformar controlos HTML em controlos de servidor ................................. 104

    5.5 Web Server Controls ..................................................................................... 1045.6 Adicionar controlos a partir do Solution Explorer ........................................... 1065.7 Seleccionar controlos .................................................................................... 1075.8 Definir as propriedades de um controlo ......................................................... 109

    5.8.1 Utilizar o painel PROPERTIES .......................................................................... 1095.8.2 Utilizar a vista SOURCE................................................................................... 1115.8.3 Smart Tags .................................................................................................... 1125.8.4 Menu FORMAT ................................................................................................ 1125.8.5 Barras de ferramentas ................................................................................... 112

  • 7/30/2019 O gua prtico ASP.net com SQL server 2008

    7/30

  • 7/30/2019 O gua prtico ASP.net com SQL server 2008

    8/30

  • 7/30/2019 O gua prtico ASP.net com SQL server 2008

    9/30

    NDICE 9

    11A LINGUAGEM VISUAL BASIC 30511.1 Variveis e tipos de dados ........................................................................... 305

    11.1.1 Declarao de variveis ............................................................................... 30611.1.2 Nomes de variveis ...................................................................................... 30611.1.3 Tipos de dados ............................................................................................. 30711.1.4 Atribuio de valores a variveis .................................................................. 30911.1.5 Arrays ........................................................................................................... 31011.1.6 Enumeraes ................................................................................................ 31211.1.7 Converses entre tipos de dados ................................................................. 313

    11.2 Comentrios ................................................................................................. 31411.3 Operaes sobre variveis .......................................................................... 314

    11.3.1 Operaes matemticas ............................................................................... 31411.3.2 Operaes sobre strings............................................................................... 316

    11.4 Terminao de linhas ................................................................................... 316

    11.5 Estruturas de controlo .................................................................................. 31611.5.1 Lgica condicional ........................................................................................ 31711.5.2 Bloco If...Then...End If............................................................. 31811.5.3 Bloco SelectCase............................................................................... 31911.5.4 Ciclos ............................................................................................................ 32011.5.5 Esfera de aco ............................................................................................ 323

    11.6 Funes, subrotinas e mtodos ................................................................... 32411.6.1 Parmetros ................................................................................................... 325

    11.7 Programao orientada para objectos ......................................................... 326

    11.7.1 Uma classe simples ...................................................................................... 32711.7.2 Criar um objecto ........................................................................................... 32911.7.3 Membros Sharede Instance......................................................................... 33011.7.4 Adicionar propriedades ................................................................................. 33011.7.5 Adicionar um mtodo .................................................................................... 33311.7.6 Adicionar um constructor.............................................................................. 33311.7.7 Adicionar um evento ..................................................................................... 335

    11.8 .NET types ................................................................................................... 33811.8.1 Namespaces e assemblies ........................................................................... 33811.8.2 Utilizarnamespaces ..................................................................................... 33911.8.3 Importarnamespaces ................................................................................... 34011.8.4 Assemblies ................................................................................................... 341

    11.9 Manipulao de objectos ............................................................................. 34111.9.1 O tipo STRING................................................................................................ 34211.9.2 Os tipos DATETIME e TIMESPAN .................................................................... 34411.9.3 O tipo ARRAY................................................................................................. 347

    12EXECUTAR PGINAS E LIDAR COM ERROS 35112.1 Testar pginas ............................................................................................. 35112.1.1 Ver pginas individuais no browser.............................................................. 351

    12.1.2 Executar o site sem depurar erros ................................................................ 353

  • 7/30/2019 O gua prtico ASP.net com SQL server 2008

    10/30

    10 CENTRO ATLNTICO COLECO TECNOLOGIAS OGUIA PRTICO DO ASP.NET COM SQLSERVER 200812.1.3 Executar o site com depurao de erros ..................................................... 35412.1.4 Definir uma pgina de incio ......................................................................... 358

    12.2 Erros ........................................................................................................ 36012.2.1 Tipos de erros .............................................................................................. 36012.2.2 Apresentao de erros no Visual Web Developer ....................................... 36112.2.3 Erros de runtime .......................................................................................... 365

    12.3 Localizar e corrigir erros .............................................................................. 36712.3.1 Activar o debugging..................................................................................... 36712.3.2 Breakpoints .................................................................................................. 36712.3.3 Painis de debugging.................................................................................. 37212.3.4 Rastreamento (tracing) ................................................................................ 376

    12.4 Tratamento de erros .................................................................................... 38312.4.1 Excepes ................................................................................................... 38412.4.2 Tratamento de erros em Visual Basic .......................................................... 38512.4.3 ProcedimentosPAGE_ERROR ou ONERROR................................................. 39212.4.4 Pgina de erro especfica ............................................................................ 39512.4.5 Tratar erros ao nvel da aplicao ................................................................ 39612.4.6 Pgina de erro standardao nvel da aplicao ............................................ 39812.4.7 Erros ao nvel do servidor Web .................................................................... 40312.4.8 Informao importante ................................................................................. 405

    13CONFIGURAO DE APLICAES 40713.1 Ficheiros de configurao ........................................................................... 407

    13.1.1 Segurana de acesso aos ficheiros ............................................................. 40913.2 Web.config .................................................................................................. 409

    13.2.1 Estrutura ...................................................................................................... 40913.2.2 Acesso programtico ................................................................................... 411

    13.3 ASP.NET Web Site Administration Tool ...................................................... 41213.4 Ficheiro Global.asax.......................................................................... 41414BASES DE DADOS E SQLSERVER 41714.1 SQL Server.................................................................................................. 41714.2 SQL Server Express .................................................................................... 418

    14.2.1 Instalar o SQL Server Express ..................................................................... 41814.2.2 Ferramentas de gesto do SQL Express ..................................................... 42414.2.3 SQL Server Management Studio Basic ....................................................... 425

    14.3 Bases de dados SQL Server ....................................................................... 42814.3.1 Objectos da base de dados ......................................................................... 42914.3.2 Criar bases de dados e tabelas ................................................................... 43014.3.3 Bases de dados exemplo ............................................................................. 437

    14.4 SQL ........................................................................................................ 44514.4.1 SQL no Management Studio Basic .............................................................. 44514.4.2 Linguagem SQL ........................................................................................... 449

    14.5 SQLCMD Trabalhar com a linha de comandos ........................................ 452

  • 7/30/2019 O gua prtico ASP.net com SQL server 2008

    11/30

    NDICE 11

    14.6 Visual Web Developer .................................................................................. 45814.6.1 Adicionar uma ligao a uma base de dados ............................................... 45814.6.2 Criar bases de dados .................................................................................... 46114.6.3 Alterar a estrutura da base de dados ............................................................ 46214.6.4 Ver dados e modificar bases de dados ......................................................... 464

    15ADO.NET 46915.1 Arquitectura .................................................................................................. 470

    15.1.1DATA PROVIDERS ........................................................................................... 47315.2 Ligaes a fontes de dados ......................................................................... 474

    15.2.1 Ficheiro web.config .............................................................................. 47615.2.2 Bases de dados attached............................................................................. 478

    15.3 Execuo de comandos SQL ....................................................................... 47915.3.1 Extrair um nico valor ................................................................................... 48015.3.2 Extrair vrias linhas ...................................................................................... 48115.3.3 Preencher uma DROPDOWNLIST ................................................................... 484

    15.4 Inserir, alterar dados e alterar a estrutura da base de dados ....................... 48515.4.1 Adicionar novas linhas a uma tabela ............................................................ 48615.4.2 Actualizar valores e eliminar linhas ............................................................... 488

    15.5DATAADAPTERS e DATASETS ......................................................................... 49415.5.1 Criar, preencher e percorrer objectos DATASET............................................ 49515.5.2 Atribuir valores DATATABLE a controlos DROPDOWNLIST .............................. 49715.5.3 Inserir, actualizar e eliminar linhas ................................................................ 500

    16ACESSO A DADOS COM CONTROLOS DATABOUND 50516.1 Utilizar fontes de dados (data sources) ........................................................ 506

    16.1.1 Configurar fontes de dados (data sources) ................................................... 51116.2 Apresentar informao da base de dados ................................................... 517

    16.2.1 Controlos DROPDOWNLIST e LISTBOX ........................................................... 51916.2.2 Controlo GRIDVIEW ....................................................................................... 52616.2.3 Controlo DETAILSVIEW................................................................................... 54416.2.4 Controlo DATALIST ........................................................................................ 54916.2.5 Controlo REPEATER ....................................................................................... 55716.2.6 Controlo LISTVIEW......................................................................................... 561

    17MANIPULAO DE DADOS 57717.1 Fontes de dados .......................................................................................... 577

    17.1.1 Mtodos e eventos ....................................................................................... 58017.2 Inserir dados ................................................................................................ 581

    17.2.1 Controlo FORMVIEW ...................................................................................... 58117.2.2 Outros controlos ........................................................................................... 58617.2.3 Inserir dados utilizando formulrios .............................................................. 58717.3 Alterao de dados ...................................................................................... 58917.3.1 Utilizao de um controlo GRIDVIEW............................................................. 589

  • 7/30/2019 O gua prtico ASP.net com SQL server 2008

    12/30

    12 CENTRO ATLNTICO COLECO TECNOLOGIAS OGUIA PRTICO DO ASP.NET COM SQLSERVER 200817.3.2 Combinar GRIDVIEWS com FORMVIEWS ....................................................... 59417.3.3 Confirmao da eliminao de registos de dados ....................................... 59817.3.4 Actualizar dados utilizando formulrios ........................................................ 60017.3.5 Controlo de acesso concorrencial ................................................................ 600

    17.4 Controlo LISTVIEW........................................................................................ 60317.5 Obter um valor IDENTITY ........................................................................... 60517.6 Uploadde imagens ..................................................................................... 610

    17.6.1 Armazenar ficheiros na base de dados ........................................................ 61617.6.2 Downloads de ficheiros ................................................................................ 618

    18GESTO DE ESTADOS 62518.1 Control State ............................................................................................... 62618.2 View state.................................................................................................... 627

    18.2.1 Aceder ao view state.................................................................................... 62818.2.2 Desactivar o view state ................................................................................ 62918.2.3 Tornar o view state seguro........................................................................... 63018.2.4 Exemplo ....................................................................................................... 631

    18.3 Transferir informao entre pginas ............................................................ 63318.3.1 Cross-Page Posting..................................................................................... 63318.3.2 Querystring.................................................................................................. 639

    18.4 Cookies ....................................................................................................... 64618.4.1 Esfera de aco dos cookies ....................................................................... 65018.4.2 Cookies e segurana ................................................................................... 65118.4.3 Determinar se um browseraceita cookies ................................................... 652

    18.5 Session State .............................................................................................. 65218.5.1 Controlo de sesses .................................................................................... 65318.5.2 Utilizar o session state ................................................................................. 65318.5.3 Configurao do session state..................................................................... 65418.5.4 Ficheiro Global.asax .......................................................................... 658

    18.6Application state .......................................................................................... 65918.6.1 Ficheiro Global.asax .......................................................................... 661

    19CONTROLO DE ACESSOS 66319.1 Configurar os parmetros de segurana ..................................................... 663

    19.1.1 Configuraes adicionais ............................................................................. 66919.2 Adicionar controlos de login ao seu site ...................................................... 670

    19.2.1 Controlo LOGIN ............................................................................................. 67219.2.2 Controlo CREATEUSERWIZARD ..................................................................... 67319.2.3 Controlos LOGINSTATUS, LOGINNAME e LOGINVIEW ..................................... 675

  • 7/30/2019 O gua prtico ASP.net com SQL server 2008

    13/30

    Prefcio

    Introduo

    O desenvolvimento de stios Web, partilhado, entre outros, por informticos,

    designers, arquitectos de informao e profissionais de marketing, tem sidouma das actividades que mais alteraes tem sofrido ao longo dos seus pou-cos anos de existncia. As pginas Web foram sempre evoluindo, passandode estticas para interactivas e depois para dinmicas, podendo ser personali-zadas para cada visitante do site e suportadas por sofisticados acessos abases de dados.

    A Microsoft, embora tendo entrado tardiamente no negcio da Internet, cedotentou recuperar o tempo perdido. Com o aparecimento das Active ServerPages (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 aplica-es, lanando no incio da dcada a .NET Framework.

    O ASP.NET representa a aplicao desta frameworkao desenvolvimento depginas Web e de web services, sendo uma verdadeira revoluo relativa-mente 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 complicadaa criao de sites Web utilizando o ASP.NET. Para resolver esse problema aMicrosoft disponibiliza o Visual Studio e o Visual Web Developer, verdadeirosIDE (Integrated Development Environment) que possuem todas as ferramen-tas que um web developerpode necessitar.

    Finalmente, a utilizao de bases de dados para a produo de sites Webdinmicos ficou mais facilitada com a disponibilizao do SQL Server Express,uma verso gratuita do SQL Server. Considerado um dos melhores sistemasde gesto de bases de dados existentes no mercado, o SQL Server, na suaverso Express, uma soluo poderosa para o desenvolvimento Web.

  • 7/30/2019 O gua prtico ASP.net com SQL server 2008

    14/30

    14 CENTRO ATLNTICOCOLECO TECNOLOGIASOGUIA PRTICO DO ASP.NET COM SQLSERVER 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 interacti-

    vos e dinmicos. especialmente orientado para os web developers que utili-zem tecnologias Microsoft.

    Embora seja recomendada alguma experincia ao nvel do desenho de pgi-nas Web, da utilizao de linguagens de programao e da manipulao debases de dados, o livro pretende ser acessvel a qualquer pessoa que tenhainteresse no desenvolvimento de stios Web.

    Caractersticas principais do livro

    Neste livro todos os captulos tentam ter uma componente prtica, mesmoaqueles em que so apresentadas, de forma mais terica, as tecnologias quevo ser utilizadas.

    Existem diversos projectos prticos, do tipo exerccio guiado, em que o leitorpode reproduzir, passo-a-passo, a demonstrao ou projecto a desenvolver.

    Todos os captulos encontram-se profusamente ilustrados. Este aspecto considerado fundamental de forma a melhor guiar o leitor na reproduo dos

    passos a efectuar em cada projecto.

    Os ficheiros dos exemplos prticos encontram-se disponveis para os leitores.Veja na pgina 18 como pode ter acesso a esses ficheiros.

    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

  • 7/30/2019 O gua prtico ASP.net com SQL server 2008

    15/30

    PREFCIO 15

    As alteraes a serem efectuadas no cdigo so assinaladas a negrito:

    paises.Items.Clear()

    paises.Items.Add("-- Seleccione um pas --")

    While dr1.Read()

    paises.Items.Add(rdr1.GetSQLString(0))

    End While

    O acesso a opes de menus ou de caixas de dilogo formatado emletras maisculas pequenas. O carcter ">" utilizado para separar omenu da opo:

    "... o ideal definir uma classe recorrendo opo FORMAT >NEWSTYLE, atribuindo ..."

    Combinaes de teclas so identificadas atravs do carcter "+". Porexemplo, CTRL+TAB significa pressionar a tecla "Control" e, mantendo

    esta tecla premida, de seguida premir a tecla Tab, soltando depois asduas teclas.

    Viso geral e Organizao

    Este livro est organizado em dezanove captulos:

    Captulo 1 Desenvolvimento de sites Web. Conceitos sobre pgi-

    nas estticas, interactivas e dinmicas, e sobre as tecnologias e meto-dologias utilizadas no desenvolvimento de pginas e sites Web.

    Captulo 2 Visual Studio e Visual Web Developer Express Edi-tion. Apresentao dos ambientes integrados de desenvolvimento queso disponibilizados pela Microsoft. Processo de instalao do VisualWeb Developer Express Edition.

    Captulo 3 Criar um site Web. Descreve a definio e gesto desites no Visual Web Developer, a gesto de ficheiros e as pastasespeciais.

    Captulo 4 Ambiente de trabalho. Apresenta o ambiente de traba-lho do Visual Web Developer.

    Captulo 5 Controlos Web e layoutde pginas. Aborda a utiliza-o de controlos em pginas Web e o layout desses controlos naspginas.

    Captulo 6 CSS. Demonstra como que o Visual Web Developerpode ser utilizado para aplicar estilos CSS a pginas Web.

    Captulo 7 Master Pages, Themes e Skins. Explica a utilizao demodelos/templates no ASP.NET, bem como outros processos paraconsolidar e centralizar a aparncia das pginas de um site.

  • 7/30/2019 O gua prtico ASP.net com SQL server 2008

    16/30

    16 CENTRO ATLNTICOCOLECO TECNOLOGIASOGUIA PRTICO DO ASP.NET COM SQLSERVER 2008

    Captulo 8 Elementos de navegao. Enumera os controlos quepodem ser utilizados para a criao de elementos de navegao dossites.

    Captulo 9 Formulrios e validaes. Apresenta os controlos que

    so utilizados na criao de formulrios de introduo de dados, bemcomo os mecanismos de validao do preenchimento desses formul-rios.

    Captulo 10 Trabalhar com cdigo. Explica as funcionalidadesexistentes no Visual Web Developer que facilitam a vida ao web deve-loperna produo de cdigo para pginas ASP.NET.

    Captulo 11 A linguagem Visual Basic. Introduz a linguagem VisualBasic, apresentando a respectiva sintaxe, a utilizao de variveis, as

    estruturas de controlo do fluxo de programa, os operadores e as fun-es, entre outros assuntos. Aborda-se tambm a programaoorientada para objectos e os diversos objectos internos da .NET Fra-mework.

    Captulo 12 Executar pginas e lidar com erros. Explica o proces-samento de pginas ASP.NET e o tratamento e depurao de erros.

    Captulo 13 Configurao de aplicaes. Aborda os ficheiros deconfigurao existentes nos sites Web ASP.NET que permitem perso-nalizar o respectivo comportamento e as funcionalidades disponibiliza-

    das. Captulo 14 Bases de dados e SQL Server. Introduz o SQL Server

    Express, a sua instalao e administrao, bem como a linguagemSQL que utilizada para interagir com as bases de dados.

    Captulo 15 ADO.NET. Apresenta a tecnologia de acesso a dadosda .NET Framework, que permite a extraco e manipulao de dadosprovenientes de bases de dados e de outras fontes de dados.

    Captulo 16 Acesso a dados com controlos databound. Descreve

    e exemplifica a utilizao dos controlos especiais do ASP.NET para oacesso a fontes de dados.

    Captulo 17 Manipulao de dados. Descreve e exemplifica autilizao dos controlos especiais do ASP.NET para a insero, altera-o e eliminao de dados.

    Captulo 18 Gesto de estados. Aborda os mecanismos de gestode estados que permitem controlar a interaco dos visitantes com umsite.

    Captulo 19 Controlo de acessos. Faz uma abordagem introdutria problemtica de controlo de acessos a sites atravs de mecanismosde autenticao, recorrendo a controlos servidor ASP.NET.

  • 7/30/2019 O gua prtico ASP.net com SQL server 2008

    17/30

    Sobre o Autor

    Pedro Remoaldo

    Pedro Remoaldo licenciado em Informtica, formador e consultor em sistemase tecnologias de informao com perto de uma dcada de experincia comodocente no ensino superior.

    Autor de 16 livros sobre sistemas operativos, software aplicacional, Internet,desenvolvimento Web e segurana, dos quais os 9 ttulos mais recentes forampublicados pelo Centro Atlntico.

    Os seus interesses so bastante abrangentes, mas atribui particular ateno stecnologias Internet, aos sistemas de gesto de bases de dados e ao BusinessIntelligence.

  • 7/30/2019 O gua prtico ASP.net com SQL server 2008

    18/30

    17 Manipulao de dados

    A maior parte dos rich data controls do ASP.NET, como a GRIDVIEW ou aLISTVIEW, permite a manipulao de dados, isto , a insero, alteraes eeliminao de registos de dados. Porm, nem todos os controlos permitemefectuar essas operaes de uma forma fcil.

    Estes controlos necessitam de um controlo SQLDATASOURCE associado parapoderem manipular dados numa fonte de dados. So estes controlos queefectuam a interaco com a fonte de dados (SQL Server) quando solicitadospelos rich data controls.

    17.1 Fontes de dados

    Os controlos SQLDATASOURCE so fundamentais na insero, alterao e eli-

    minao de registos de dados. Mas tm de ser configurados nesse sentido, oque efectuado clicando no boto ADVANCED, do ecr CONFIGURE THE SELECTSTATEMENT, e activando a opo GENERATE INSERT,UPDATE, AND DELETESTATEMENTS:

  • 7/30/2019 O gua prtico ASP.net com SQL server 2008

    19/30

    610 CENTRO ATLNTICO COLECO TECNOLOGIAS OGUIA PRTICO DO ASP.NET COM SQLSERVER 2008

    Neste mtodo apenas apresentamos uma mensagem ao visitante da pgina ainform-lo sobre o cdigo do livro produzido. Mas podemos utilizar agora estevalor para efectuar outro tipo de operaes.

    17.6 Uploadde imagens

    A possibilidade de transferir ficheiros para um site (em ingls, file upload) muito apreciada nomeadamente nos sistemas de gesto de contedos. tambm utilizada em sites de webmail, como o Google Mail ou o HotMail, paraenviar ficheiros anexados a mensagens.

    Existem dois controlos no painel TOOLBOX que permitem este uploadde fichei-ros:

    Controlo INPUT (FILE) disponvel na categoria HTML;

    Controlo FILEUPLOAD da categoria STANDARD;

    Visualmente os dois controlos possuem a mesma aparncia:

    Um controlo de upload assim constitudo por uma caixa de texto e um boto.Estes elementos no possuem grande formatao e mesmo o texto que apa-

    rece no boto depende do browser, do sistema operativo e da lngua utilizadapelo visitante.

    Quando o visitante da pgina clica no boto BROWSE/PROCURAR aparece umacaixa de dilogo que lhe permite seleccionar o ficheiro que pretende transferir.O visitante tambm pode preencher manualmente a caixa de texto com a loca-lizao do ficheiro. Porm, o contedo da caixa de texto no pode ser preen-chida programaticamente, nem por ASP.NET nem por JavaScript.

    possvel utilizar o controlo HTML (INPUT (FILE)) para fazer o upload, maspara poder manipular o controlo em cdigo teremos de o converter para um

    controlo de servidor, acrescentando o seguinte atributo:

    Mas o ideal utilizar o controlo servidor F ILEUPLOAD. De qualquer forma estecontrolo convertido no controlo INPUT (FILE)) de HTML quando a pgina enviada para o visitante.

    A presena deste controlo numa pgina Web faz com que o ASP.NET acres-cente o atributo enctype ao elemento form:

  • 7/30/2019 O gua prtico ASP.net com SQL server 2008

    20/30

    17. MANIPULAO DE DADOS 611

    Este atributo enctype possui, por omisso, o valorapplication/x-www-form-urlencoded, que um tipo de codificao ineficiente para enviargrandes quantidades de dados binrios, ou texto que contenha caracteresno-ASCII. Por isso que se utiliza o tipo de codificao multipart/form-

    data que contm uma srie de partes (da o nome), cada uma das quais serefere a um controlo do formulrio.

    Quando o formulrio submetido, o servidor recebe o(s) ficheiro(s) e cabe aocdigo ASP.NET examinar, ignorar ou guardar esse(s) ficheiro(s). Pode-seguardar os ficheiros em disco ou numa base de dados.

    No servidor, para obtermos informao sobre o ficheiro submetido temos deutilizar a classe FILEUPLOAD e as seguintes propriedades:

    FILEBYTES contedo do ficheiro como um arrayde bytes.

    FILECONTENT contedo do ficheiro como uma stream, permitindo as-sim a sua leitura.

    FILENAME nome original do ficheiro.

    HASFILE devolve TRUE se um ficheiro tiver sido transferido, ou FALSEcaso contrrio.

    POSTEDFILE permite aceder a um objecto HTTPPOSTEDFILE que pos-sui informao sobre um ficheiro transferido.

    Utilizando a propriedade POSTED

    FILE

    temos acesso a propriedades adicionaissobre o ficheiro transferido:

    CONTENTLENGTH tamanho do ficheiro em bytes.

    CONTENTTYPE MIME type do ficheiro transferido, isto , o tipo deficheiro (imagem, documento, etc.)

    FILENAME fully qualified name do ficheiro, isto , o nome do ficheirobem como a sua localizao completa no computador do visitante, dotipo c:\ficheiros\imagens\ca.gif

    INPUTSTREAM Permite obter o contedo do ficheiro como umastream, permitindo assim a sua leitura.

    A classe HTTPFILECOLLECTION disponibiliza acesso, como uma coleco deficheiros, a todos os ficheiros que so transferidos. Caso a pgina permita atransferncia de mais de um ficheiro (recorrendo a vrios controlos F ILE-UPLOAD), ento esta coleco pode ser percorrida para obter informao sobrecada um dos ficheiros. Por exemplo:

    Dim listaFicheiros As HttpFileCollection = Request.FilesFor Each ficheiro As String In listaFicheiros.AllKeys

    ' Se o ficheiro no tiver tamanho 0If (listaFicheiros(ficheiro).ContentLength > 0) Then' Fazer algo com o ficheiro

  • 7/30/2019 O gua prtico ASP.net com SQL server 2008

    21/30

    612 CENTRO ATLNTICO COLECO TECNOLOGIAS OGUIA PRTICO DO ASP.NET COM SQLSERVER 2008

    ' Obtm-se o nome do ficheiro (incluindo pasta)' utilizando listaFicheiros(ficheiro).FileName...

    End IfNext

    Normalmente a operao mais efectuada no servidor armazenar o ficheironuma pasta especfica. Para isso utiliza-se o mtodo SAVEAS:

    ElementoFileUpload.SaveAs(pasta/nomeficheiro))

    Mas antes de invocar este mtodo conveniente utilizar a propriedadeHASFILE para verificar se o controlo FILEUPLOAD possui um ficheiro paratransferir com um tamanho superior a 0KB. Caso isso no acontea, podemosignorar a transferncia ou apresentar ao visitante uma mensagem informando--o do ocorrido.

    Este cdigo normalmente colocado no event handler associado ao eventoCLICK do boto que submete o formulrio:

    Protected Sub btInserir_Click(ByVal sender As Object, ByVal eAs System.EventArgs) Handles btInserir.Click

    If (fuFicheiro.HasFile) ThenDim nome_ficheiro As String = Server.MapPath("fich") &

    "/" & fuFicheiro.FileNamefuFicheiro.SaveAs(nome_ficheiro)

    ElselblMensagem.Text = "No foi especificado nenhum

    ficheiro para ser transferido."End If

    End Sub

    Um dos problemas que podemos aqui encontrar o facto de na pasta fichpoder j existir um ficheiro com o mesmo nome que pretendemos atribuir. Umaforma de resolver este problema gerar um nome baseado na identificao doutilizador, na hora e data corrente ou em valores aleatrios (por exemplo, utili-zando a estrutura GUID).

    Por exemplo:

    If (fuFicheiro.HasFile) ThenDim nomeTemporario As StringDim pasta As String = Server.MapPath("fich") & "/"Dim nome_ficheiro As String = fuFicheiro.FileNameDim pastaFicheiro As String = pasta & nome_ficheiroIf (System.IO.File.Exists(pastaFicheiro)) Then

    Dim contador As Integer = 1While (System.IO.File.Exists(pastaFicheiro))

    nomeTemporario = contador.ToString() &nome_ficheiro

    pastaFicheiro = pasta + nomeTemporariocontador = contador + 1

    End While

  • 7/30/2019 O gua prtico ASP.net com SQL server 2008

    22/30

    17. MANIPULAO DE DADOS 613

    pastaFicheiro = pasta & nomeTemporarioEnd IffuFicheiro.SaveAs(pastaFicheiro)

    Else...

    Neste caso utilizamos um valor inteiro (1, 2, 3, ...) que colocamos no incio donome original. Teremos assim nomes do tipo 1computador.gif,2computador.gif, etc. O mtodo SYSTEM.IO.FILE.EXISTS permite determinarse 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 transfernciade imagens:

    Private Function TipoFicheiro(ByVal nomeficheiro As String) As

    BooleanDim extensao As String =System.IO.Path.GetExtension(nomeficheiro)

    Select Case extensao.ToLower()Case ".gif", ".png", ".jpg", ".jpeg"

    Return TrueCase Else

    lblMensagem.Text = "O ficheiro transferido no uma imagem!"

    Return FalseEnd Select

    End Function

    Para invocar a funo:

    Dim pastaFicheiro as String = pasta & nome_ficheiroDim nome_ficheiro as String = fuFicheiro.FileNameIf (TipoFicheiro(nome_ficheiro)) Then

    ...ficheiro.SaveAs(pastaFicheiro)

    Em vez de extrairmos a extenso do ficheiro o mais adequado obter o res-pectivo MIME type recorrendo propriedade CONTENTTYPE:

    Private Function TipoFicheiro(ByVal tipo As String) As BooleanSelect Case tipoCase "image/gif", "image/png", "image/x-png",

    "image/jpeg", "image/pjpeg"Return True

    Case ElselblMensagem.Text = "O ficheiro transferido no

    uma imagem!"Return False

    End SelectEnd Function

    ...Dim pastaFicheiro as String = pasta & nome_ficheiroDim nome_ficheiro as String = ficheiro.FileName

  • 7/30/2019 O gua prtico ASP.net com SQL server 2008

    23/30

    614 CENTRO ATLNTICO COLECO TECNOLOGIAS OGUIA PRTICO DO ASP.NET COM SQLSERVER 2008

    Dim MIMEType as String = ficheiro.PostedFile.ContentType;If (TipoFicheiro(MIMEType.ToString())) Then

    ...ficheiro.SaveAs(pastaFicheiro)

    ElselblMensagem="O ficheiro transferido no do tipoautorizado!"

    End If

    Na funo TipoFicheiro utilizam-se os MIME type image/pjpeg eimage/x-png, alm dos tradicionais MIME types associados s imagenspermitidas em sites, porque assim que o Internet Explorer identifica as ima-gens do tipo JPEG e PNG, respectivamente

    Como bvio, convm tambm efectuar este teste utilizando JavaScript, evi-tando assim uma viagem ao servidor para processar o cdigo ASP.NET.

    Dado que se tentarmos guardar um ficheiro no existente ser desencadeadauma excepo HTTPEXCEPTION, o ideal colocar a invocao do mtodoSAVEAS dentro de uma estrutura TRY..CATCH..FINALLY, mesmo que utilizemostodas as validaes apresentadas anteriormente:

    TryfuFicheiro.SaveAs(pastaFicheiro)

    Catch Err As ExceptionlblMensagem.Text = "Ocorreu um erro na transferncia doficheiro!"

    End Try

    Podemos guardar o ficheiro onde quisermos. Porm, para evitar obter errosaccess denied quando se tenta guardar ficheiros directamente numa pastada sua aplicao Web, temos de verificar as permisses.

    Assegure-se que o directrio virtual no IIS possui permisses de leitura eescrita. Para guardar um ficheiro no file system do servidor, a conta Windowsassociada com a pgina ASP.NET tem de possui permisses suficientes. Nocaso do Windows XP (verso 5 do IIS) a conta ASPNET. Nas verses poste-riores do IIS (Windows Vista e Windows Server 2003/2008) a conta NET-

    WORK SERVICE.No Windows Explorer, clique com o boto direito do rato na pasta onde pre-tende guardar os ficheiros, seleccione a opo PROPERTIES e depois o separa-dor SECURITY. Clique no boto EDIT, depois no boto ADD, escreva NETWORKSERVICE (ou ASPNET, conforme o sistema operativo) na caixa ENTER THEOBJECT NAMES TO SELECT, clique em OK, e depois atribua a permisso WRITEna coluna ALLOW da lista PERMISSIONS FOR NETWORKSERVICE.

  • 7/30/2019 O gua prtico ASP.net com SQL server 2008

    24/30

    17. MANIPULAO DE DADOS 615

    Por omisso, o ASP.NET rejeitar um pedido de upload de um ficheiro queseja maior que cerca de 4MB (4096KB), desencadeando uma exception.Pode-se alterar este valor mximo atravs da modificao do atributo maxRe-questLength do elemento httpRuntime no ficheiro web.config. No

    exemplo seguinte aumentmos o tamanho mximo para 8MB. Utiliza-se 8192porque o valor especificado em kilobytes (KB):

    ......

    Na realidade, o atributo maxRequestLength define o tamanho mximo dainformao que pode ser enviada por um formulrio para o servidor, incluindoa informao de todos os campos do formulrio. Por isso, o tamanho mximode um ficheiro transferido ser ligeiramente inferior ao especificado pelo atri-buto maxRequestLength.

    Pode-se tambm utilizar outro atributo, requestLengthDiskThreshold,para definir como que o envio do contedo do formulrio (e o ficheiro transfe-rido) bufferedpara o sistema de ficheiros, para evitar a utilizao da mem-ria para o armazenamento temporrio do ficheiro e da informao transferida.

    Quando o tamanho de um ficheiro/informao transferido ultrapassa o valor doatributo requestLengthDiskThreshold, o resto do ficheiro bufferedpara

  • 7/30/2019 O gua prtico ASP.net com SQL server 2008

    25/30

    616 CENTRO ATLNTICO COLECO TECNOLOGIAS OGUIA PRTICO DO ASP.NET COM SQLSERVER 2008

    o file system para a pasta Temporary ASP.NET Files (que se encontra napasta C:\Windows\Microsoft.NET\Framework\v2.0.50727).

    Por omisso, a .NET Framework est configurada para fazer o buffering deficheiros (mais concretamente deposts de formulrios) maiores que 80KB. Se

    pretender alterar este valor ter de ter em ateno que dever ser inferior aovalor do atributo maxRequestLength:

    Se possuir um valor do atributo maxRequestLength demasiado alto podesofrer um ataque denial-of-service atravs do envio de mensagens com gran-des ficheiros, tornando o seu servidor muito lento ou mesmo parando-o.

    17.6.1 Armazenar ficheiros na base de dados

    Embora o armazenamento de ficheiros no disco do servidor seja muito co-mum, o web developerpode desejar guardar os ficheiros na base de dados.

    Uma das vantagens de armazenar ficheiros em disco que o processo fcil,bastando invocar o mtodo SAVEAS como vimos anteriormente. Outra vanta-gem a facilidade de efectuar cpias de segurana de uma pasta. Alm disso,podem-se efectuar cpias de segurana incrementais.

    Como desvantagens, a inexistncia de uma relao directa entre os ficheiros e

    os registos na tabela da base de dados. Isto pode trazer problemas quando seeliminam registos e nos esquecemos de eliminar o ficheiro respectivo. A prin-cipal desvantagem so as permisses de acesso e escrita em disco, quepodem ser problemticas quando se aloja o site num ISP.

    Relativamente ao armazenamento de ficheiros em bases de dados, evita pro-blemas com permisses de pastas ao nvel do file system alm de que possi-bilita uma cpia de segurana mais fcil dos dados do site, dado que toda ainformao se encontra num nico stio, isto , na base de dados.

    Como desvantagens, a performance mais lenta, mas depende do tipo deficheiros armazenados, do servidor e de outros factores. O acesso aos fichei-ros tambm uma desvantagem dado que no podemos aplicar um processo(como escalar ou rodar imagens) a todos os ficheiros, sem primeiro extra-losda base de dados.

    Quando armazena ficheiros na base de dados vulgar armazenar a seguinteinformao sobre o ficheiro:

    contedo do ficheiro (tipo de dados image ou varbinary(max));

    tipo de ficheiro (tipo de dados varchar); comprimento em bytes (tipo de dados int);

  • 7/30/2019 O gua prtico ASP.net com SQL server 2008

    26/30

    17. MANIPULAO DE DADOS 617

    nome que o ficheiro possua quando foi uploaded(tipo de dados var-char). Pode ser utilizado quando um visitante solicitar posteriormenteo downloaddo ficheiro.

    De forma a exemplificarmos a insero de ficheiros em bases de dados SQL,vamos alterar a estrutura da nossa tabela livros, acrescentando um novocampo, excerto, do tipo varbinary(MAX), que vai conter um ficheiro PDFcom um excerto de cada livro:

    O nosso formulrio de insero de livros tem agora o seguinte aspecto:

    Repare que vamos utilizar dois controlos do tipo FILEUPLOAD. No existe limiterelativamente ao nmero de controlos deste tipo que se podem utilizar empginas Web, se bem que quantos mais controlos utilizar mais lento ser oprocessamento da pgina.

    No controlo SQLDATASOURCE associado a este formulrio vamos efectuar aseguinte alterao ao comando SQL:

  • 7/30/2019 O gua prtico ASP.net com SQL server 2008

    27/30

    618 CENTRO ATLNTICO COLECO TECNOLOGIAS OGUIA PRTICO DO ASP.NET COM SQLSERVER 2008

    O valor a inserir no campo excerto da tabela livros provm da propriedade

    FILEBYTES do controlo FILEUPLOAD. Esta propriedade permite obter o contedodo ficheiro como um arrayde bytes. No cdigo aparece:

    Basta invocar o mtodo INSERT do controlo SQLDATASOURCE para inserir osdados na base de dados incluindo o ficheiro.

    17.6.2 Downloads de ficheiros

    Agora que j temos os ficheiros armazenados na base de dados necessrioum procedimento para permitir ao visitante aceder a esses ficheiros.

    Vamos arrastar a tabela livros do painel DATABASE EXPLORER para umanova pgina. Como j foi anteriormente explicado, esta operao criar umcontrolo GRIDVIEW e um controlo SQLDATASOURCE. Este controlo SQLDA-TASOURCE extrair todas as linhas e todas as colunas da tabela livros,excepto a coluna excerto dado que do tipo varbinary.

    Vamos utilizar um linkpara possibilitar a transferncia do excerto do livro em

    formato PDF. No controlo GRIDVIEW seleccione a opo ADD NEW COLUMN dorespectivo menu de tarefas. Na caixa de dilogo ADD FIELD seleccioneHYPERLINKFIELD da lista CHOOSE A FIELD TYPE:

  • 7/30/2019 O gua prtico ASP.net com SQL server 2008

    28/30

    17. MANIPULAO DE DADOS 619

    Se quiser pode introduzir, na caixa HEADER TEXT, o texto que deve aparecer nocabealho da coluna na GRIDVIEW. A seguir, na rea HYPERLINK TEXT introduzao texto que pretende que aparea no link:

    Finalmente, na rea HYPERLINK URL, seleccione a opo GET URL FROM DATAFIELD e depois seleccione a coluna/campo codlivro na lista:

    Na caixa URL FORMAT STRING introduzimos:

    processaficheiro.ashx?codlivro={0}

    Isto significa que sempre que se clicar no link Excerto ser invocada apgina processaficheiro.ashx, e passada a essa pgina, como par-metro, o valor da coluna/campo codlivro do livro seleccionado. Neste caso,o nome do parmetro (codlivro) idntico ao nome da coluna/campo databela livros, mas isso no obrigatrio.

    Para enviar para o visitante de um site um ficheiro que est armazenado nabase de dados, temos de recorrer a um ficheiro HTTP Handler (que possui a

    extenso .ashx). Para criar um ficheiro deste tipo seleccione a opo F ILE >NEW FILE (ou ADD NEW ITEM no menu de contexto do site no painel SOLUTIONEXPLORER) e, na caixa de dilogo ADD NEW ITEM, seleccione o template

  • 7/30/2019 O gua prtico ASP.net com SQL server 2008

    29/30

    ww

    w.cen

    troatlantico.pt

  • 7/30/2019 O gua prtico ASP.net com SQL server 2008

    30/30