portalmemoriadb

Propaganda
Atividade ASP.NET
Portal da Memoria
Atividade
Desenvolver uma aplicação ASP.NET com
funcionalidade similar à existente no site
centenário.ifrn.edu.br utilizando Banco de Dados
Objetivo
Integrar os conhecimentos em programação
ASP.NET apresentados através do
desenvolvimento de um site
Atividade ASP.NET
Portal da Memoria
Criação de um banco de dados para o portal
Execute o SQL Server Manager e entre os parâmetro de login
apresentados abaixo.
Server name: (local)
Authentication: SQL Server Authentication
Login: sa
Senha: senha
A tela de entrada do SQL Server Mananger
é apresentada e a janela de Object Explorer
apresenta as entidades do servidor do
banco de dados.
A pasta Database apresenta os bancos de dados
armazenados no servidor
Atividade ASP.NET
Portal da Memoria
Criação de um banco de dados para o portal
1.
2.
3.
Para criar um novo banco de dados selecione com o botão direito
na pasta Database a opção “New database”.
Informe em “Database Name” nome “PortalMemoria” para o novo
banco de dados a ser criado. Aceite as demais opções padrões e
confirme.
O novo banco de dados é apresentado
conforme pode ser visto na figura ao lado
Atividade ASP.NET
Portal da Memoria
Criação de uma tabela no banco de dados
1.
2.
3.
4.
Expanda a pasta Portal memória para ter acesso a estrutura do
banco de dados.
Será criada agora uma tabela para armazenar as informações de
Contato lançadas na página de contato do site. Será necessário
armazenar o nome do contato, o e-mail, a intenção o assunto e a
mensagem.
Selecione com o botão direito a pasta Tables e escolha a opção
“New Table”.
Informe a estrutura da tabela conforme apresentado a seguir:
IDContato, int, Allow Null Desmarcado, Column properties: Is Identity = Yes
Contato, varchar(100)
Email, varchar(100)
Intencao, varchar(100)
Assunto, varchar(100)
Mensagem, varchar(250)
Atividade ASP.NET
Portal da Memoria
Criação de uma tabela no banco de dados
5.
6.
Salve a tabela com nome
Contato.
A tela do SQL Server
Mananger deverá estar
conforme apresentado
ao lado.
Atividade ASP.NET
Portal da Memoria
Adicione a página de contato ao portal
1.
2.
3.
4.
5.
Abra o projeto do Portal da Memoria
Adicione uma página de nome WebFormContato.aspx vinculada à
página mestre SiteMaster.master
Adicione componentes na página para solicitar a digitação das
informações de nome do contato, e-mail, intenção, assunto e
mensagem. Adicione um botão para enviar as informações de
contato. A figura do próximo slide apresenta a página de contato.
Altere o nome dos componentes para TextBoxNome, TextBoxEmail,
RadioButtonListIntencao, TextBoxAssunto e TextBoxMensagem.
Para podermos criar o manipulador para o evento clique do botão e
incluir o código que irá cadastrar no banco de dados na informações
lançadas na página de contato, deveremos criar a conexão com o
banco de dados conforme foi feito no capítulo 11.
Atividade ASP.NET
Portal da Memoria
Página de
contato
Atividade ASP.NET
Portal da Memoria
Configuração de conexão com o banco de dados
1.
2.
3.
4.
5.
6.
7.
Adicione ao formulário um componente SQLDataSource.
Selecione a opção “Configure Data Source” no menu do
componente. Essa opção irá executar um wizard de configuração
de conexão.
Selecione o botão “new connection” no wizard. A tela de
configuração de conexão aparecerá.
Observe se o DataSource tem selecionado a opção “Microsoft SQL
Server (SqlClient)”. Em caso contrário, clique no botão “Change” e
selecione este tipo de Data Source.
Na opção Server Name digite “(local)”.
Selecione “Use SQL Server Authentication”.
Digite em “User name” o conteúdo “aluno” e em Password o
conteúdo “senha”.
Atividade ASP.NET
Portal da Memoria
Configuração de conexão com
o banco de dados
1.
2.
3.
4.
Marque a opção “Save My Password”.
Informe o nome do banco de dados
“PortalMemoria”.
Clique no botão “Test Connection” para
validar a conexão.
Visualize a String de Conexão gerada
Data Source=(local);Initial
Catalog=PortalMemoria;Persist
Security Info=True;User
ID=aluno;Password=senha
5.
Salve a conexão com o nome
“PortalMemoriaConnectionString”
Atividade ASP.NET
Portal da Memoria
Codificação para gravar contato no banco de dados
// Acessa a configuração da conexão
string s = ConfigurationManager.ConnectionStrings
["PortalMemoriaConnectionString"].ConnectionString;
// Cria Conexão com banco de dados
SqlConnection conn = new SqlConnection (s);
// Abre conexão com o banco de dados
conn.Open();
// Cria comando SQL
SqlCommand com = conn.CreateCommand();
// define SQL do comando
com.CommandText = "INSERT INTO Contato(Contato, email, intencao, assunto,
mensagem) VALUES (@Contato, @email, @intencao, @assunto, @mensagem)";
Atividade ASP.NET
Portal da Memoria
Codificação para gravar contato no banco de dados
// define valor dos parametros
com.Parameters.AddWithValue("@Contato", TextBoxNome.Text);
com.Parameters.AddWithValue("@email", TextBoxEmail.Text);
com.Parameters.AddWithValue("@intencao",
RadioButtonListIntencao.SelectedValue);
com.Parameters.AddWithValue("@assunto", TextBoxAssunto.Text);
com.Parameters.AddWithValue("@mensagem", TextBoxMensagem.Text);
// Executa o comando de inserção
com.ExecuteNonQuery();
Mensagem de execução
1.
2.
Observe que não há nenhuma mensagem para informar que o
comando foi realizado com sucesso ou se houve erro.
Após clicar no botão, execute o SQL Server Manager e verifique
se os dados foram inseridos no banco de dados
Atividade ASP.NET
Portal da Memoria
Adicionando uma página de mensagem ao portal
1.
2.
3.
Adicione uma página de nome WebFormMensagem.aspx vinculada à
página mestre SiteMaster.master
Adicione um componente de rótulo na página para apresentar a
mensagem. Altere o nome do componente para LabelMensagem.
No evento Page_Load da página introduza o código abaixo
protected void Page_Load(object sender, EventArgs e)
{
string msgTipo = Request.QueryString["msgTipo"];
string msg
= Request.QueryString["msg"];
if ((msg != null) && (msgTipo != null))
{
LabelMensagem.Text = msg;
if (msgTipo == "ok") LabelMensagem.ForeColor = Color.Black;
else if (msgTipo == "erro") LabelMensagem.ForeColor = Color.Red;
}
}
Atividade ASP.NET
Portal da Memoria
Adicionando uma mensagem na página de Contato
1.
2.
Abra a página de contato.
Altere o código do manipulados do botão para incluir um bloco
try..catch e o redirecionamento para a página de mensagem
conforme mostrado a seguir
protected void Button1_Click(object sender, EventArgs e)
{
string redirect;
try
{
(aqui deve ser copiado o código existente dos slides 10 e 11)
// mensagem de sucesso
redirect = "~\\WebFormMensagem.aspx?msgTipo=ok&msg=Contato Enviado com Sucesso";
}
catch (Exception ex)
{
// mensagem de erro
redirect = "~\\WebFormMensagem.aspx?msgTipo=erro&msg=Erro Enviando Contato";
}
Response.Redirect(redirect);
}
Atividade ASP.NET
Portal da Memoria
Criação de uma tabela para cadastrar a agenda
1.
2.
Execute o SQL Server Manager e abra o banco de dados
PortalMemoria.
Selecione com o botão direito a pasta Tables e escolha a opção
“New Table” e informe a estrutura da tabela, ou, execute o script de
criação da tabela apresentado abaixo
CREATE TABLE [dbo].[Agenda](
[IDAgenda] [int] IDENTITY(1,1) NOT NULL,
[AgendaTipo] [varchar](50) NULL,
[DataInicio] [datetime] NULL,
[DataFim] [datetime] NULL,
[Horario] [varchar](50) NULL,
[Atividade] [varchar](100) NULL,
[Descricao] [varchar](250) NULL,
[Local] [varchar](100) NULL
) ON [PRIMARY]
Atividade ASP.NET
Portal da Memoria
Introduzindo dados em uma tabela
1.
2.
Utilizando o SQL Server Manager selecione a tabela Agenda criada
e acesse a opção “Edit Rows” para lançar dados na tabela
Acrescente as informações de duas ou mais entradas da agenda
conforme apresentado abaixo.
Atividade ASP.NET
Portal da Memoria
Adicionando uma página de agenda ao portal
1.
2.
3.
4.
5.
Adicione uma página de nome WebFormAgenda.aspx vinculada à
página mestre SiteMaster.master
Adicione à página um rótulo e um GridView. Altere a propriedade
Text do rótulo para “Atividades em Nível Local”.
Acesse no menu do GridView a opção “Choose Data Source” e
escolha “New Data Source”. Escolha o tipo SQL Database e aceite o
nome padrão SqlDataSource1.
Selecione a String de Conexão PortalMemoriaConnectionString.
Selecione a tabela Agenda e acrescente uma cláusula WHERE de
forma que seja filtrados os registro onde o campo AgendaTipo
contenha o valor “LOCAL”. Veja figura no próximo slide.
Atividade ASP.NET
Portal da Memoria
Adicionando uma cláusula WHERE a um DataSource
Atividade ASP.NET
Portal da Memoria
Adicionando um grid para a agenda Nacional
1.
2.
3.
4.
5.
Adicione à página um segundo rótulo e outro GridView. Altere a
propriedade Text do rótulo para “Atividades em Nível Nacional”.
Acesse no menu do GridView a opção “Choose Data Source” e
escolha “New Data Source”. Escolha o tipo SQL Database e aceite o
nome padrão SqlDataSource2.
Selecione a String de Conexão PortalMemoriaConnectionString.
Selecione a tabela Agenda e acrescente uma cláusula WHERE de
forma que seja filtrados os registro onde o campo AgendaTipo
contenha o valor “NACIONAL.
Ajuste o leiaute dos componentes GridView para uma melhor
visualização das Agendas
Atividade ASP.NET
Portal da Memoria
Página de Agenda
Atividade ASP.NET
Portal da Memoria
Adicionando uma página para cadastrar cronologia
1.
2.
3.
4.
5.
Adicione uma página de nome WebFormCadCronologia.aspx
vinculada à página mestre SiteMaster.master.
Acesse a página mestre e adicione no componente “Menu1” o itm de
menu “Cadastrar Cronologia”. Associe este item a página
WebFormCadCronologia.asp.
Adicione componentes na página para solicitar a digitação das
informações de cronologia: Ano, Título, Descrição, Legenda e
Arquivo com foto. Utilize componentes TextBox para as informações
tipo texto e o componente FileUpload para selecionar o arquivo com
a foto.
Altere o nome dos componentes para TextBoxAno, TextBoxTitulo,
TextBoxDescricao, TextBoxLegenda e FileUploadImagem.
Adicione um componente de botão e atribua o texto “Enviar”.
Atividade ASP.NET
Portal da Memoria
Adicionando uma página para cadastrar cronologia
6.
7.
Altere a propriedade TextMode do componente TextBoxDescricao
para MultiLine e aumente o tamanho do componente para permitir
uma melhor digitação de seu conteúdo.
Adicione no banco de dados uma tabela de nome Cronologia para
cadastrar as informações de cronologia submetidas pelo formulário.
Segue abaixo o comando para criar a tabela.
CREATE TABLE [dbo].[Cronologia](
[IDCronologia] [int] IDENTITY(1,1) NOT NULL,
[Ano] [int] NOT NULL,
[Titulo] [varchar](100) NULL,
[Descricao] [varchar](250) NULL,
[Legenda] [varchar](100) NULL,
[Arquivo] [varchar](100) NULL
) ON [PRIMARY]
Atividade ASP.NET
Portal da Memoria
Adicionando uma página para cadastrar cronologia
8.
9.
Adicione à aplicação uma pasta de nome “Cronologia” onde serão
arquivados o arquivos com as imagens. No banco de dados constará
apenas o nome dos arquivos.
Crie um manipulador para o evento de clique do botão e insira o
código a seguir.
Atividade ASP.NET
Portal da Memoria
Código para cadastrar cronologia
string redirect;
string filename;
try
{
// Acessa a configuração da conexão
string s = ConfigurationManager.ConnectionStrings
["PortalMemoriaConnectionString"].ConnectionString;
// Cria Conexão com banco de dados
SqlConnection conn = new SqlConnection(s);
// Abre conexão com o banco de dados
conn.Open();
// Cria comando SQL
SqlCommand com = conn.CreateCommand();
// define SQL do comando
com.CommandText = "INSERT INTO Cronologia(Ano, Titulo, Descricao, Legenda, Arquivo)
VALUES (@Ano, @Titulo, @Descricao, @Legenda, @Arquivo)";
Atividade ASP.NET
Portal da Memoria
Código para cadastrar cronologia
// define valor dos parametros
com.Parameters.AddWithValue("@Ano", Convert.ToInt32(TextBoxAno.Text));
com.Parameters.AddWithValue("@Titulo", TextBoxTitulo.Text);
com.Parameters.AddWithValue("@Descricao", TextBoxDescricao.Text);
com.Parameters.AddWithValue("@Legenda", TextBoxLegenda.Text);
com.Parameters.AddWithValue("@Arquivo", FileUploadImagem.FileName);
// Executa o comando de inserção
com.ExecuteNonQuery();
// Salva arquivo na pasta Cronologia
filename = Request.PhysicalApplicationPath + "Cronologia\\" +
FileUploadImagem.FileName;
FileUploadImagem.SaveAs(filename);
// mensagem de sucesso
redirect = "~\\WebFormMensagem.aspx?msgTipo=ok&msg=Cronologia Enviada com Sucesso";
}
catch (Exception ex)
{
// mensagem de erro
redirect = "~\\WebFormMensagem.aspx?msgTipo=erro&msg=Erro Enviando Cronologia";
}
Response.Redirect(redirect);
Atividade ASP.NET
Portal da Memoria
Exercício
1.
2.
3.
4.
5.
6.
Criar página para cadastrar informações de agenda
Criar página para apresentar Cronologia a partir das
informações gravadas no banco de dados e das imagens
copiadas na pasta Cronologia da aplicação
Criar página para cadastro de usuário (utilizando a
estrutura de usuário do asp.net)
Criar página para login de usuário
Liberar acesso às páginas de cadastrar informações de
agenda e de cadastrar cronologia apenas para usuários
cadasrados
Permitir acesso anônimo para demais páginas
Download