ASP
.NET - Inserindo e Atualizando dados em páginas distintas
Este artigo é essencialmente prático e mostra como podemos incluir e atualizar registros em uma tabela de um banco de dados SQL Server em uma aplicação ASP .NET Web Forms.
Recursos usados neste artigo:
Usando o SQL Server Management Studio iremos criar um banco de dados Cadastro.mdf e uma tabela Clientes que possui a seguinte estrutura:
![]() |
USE [Cadastro] GO SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO CREATE TABLE [dbo].[Clientes]( [id] [int] IDENTITY(1,1) NOT NULL, [nome] [nvarchar](50) NULL, [endereco] [nvarchar](50) NULL, [telefone] [nvarchar](20) NULL, [email] [nvarchar](100) NULL, CONSTRAINT [PK_Clientes] PRIMARY KEY CLUSTERED ( [id] ASC )WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY] ) ON [PRIMARY] GO |
O script ao lado pode ser usado para criar a tabela usando a janela - Nova Consulta(New Query) - e clicando no botão Executar(Execute).
Abra o Visual Web Developer 2010 Express Edition e crie um novo projeto do tipo ASP .NET Web Application usando a linguagem Visual Basic e o template Web:
![]() |
O template irá criar uma estrutura já pronta que iremos adaptar para o nosso projeto fazendo algumas alterações.
Vamos definir na master page Site.Master duas novas opções no Menu para Inserir e Atualizar registros da tabela Clientes.
Para isso edite o arquivo Site.Master e altere o código conforme mostrado a seguir:
..... ..... <asp:Menu ID="NavigationMenu" runat="server" CssClass="menu" EnableViewState="false" IncludeStyleBlock="false" Orientation="Horizontal"> <Items> <asp:MenuItem NavigateUrl="~/Default.aspx" Text="Home"/> <asp:MenuItem NavigateUrl="~/About.aspx" Text="About"/> <asp:MenuItem NavigateUrl="~/Inserir.aspx" Text="Inserir"/> <asp:MenuItem NavigateUrl="~/Atualizar.aspx" Text="Atualizar"/> <asp:MenuItem NavigateUrl="~/Exibir.aspx" Text="Exibir Clientes"/> </Items> </asp:Menu> .... .... |
O código destacado em azul refere-se as duas linhas de código que incluímos no arquivo.
Agora vamos criar as três páginas no projeto : Inserir.aspx , Atualizar.aspx e Exibir.aspx.
No menu Project clique em Add New Item e selecione Web Form using Master Page informando o nome Inserir.aspx e clicando em Add;
![]() |
|
![]() |
A seguir selecione a master page Site.Master e clique em OK;
Repita o procedimento e crie as página Atualizar.aspx e Exibir.aspx da mesma forma.
Antes de definir o código das páginas vamos incluir a string de conexão do banco de dados Cadastro no arquivo web.config.
Abra o arquivo web.config e defina a string de conexão conforme abaixo:
![]() |
Incluindo registros
Agora abra a página Inserir.aspx e inclua o código abaixo que será o formulário para o usuário informar os dados para cadastrar um novo cliente:
<%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/Site.Master" CodeBehind="Inserir.aspx.vb" Inherits="AtualizandoInserindoDados.Inserir" %> <asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server"> </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> <p> <div> <h2>Cadastrar Cliente</h2> <asp:Label ID="Label1" runat="server" Text="Nome" Font-Bold="True" Width="100px"></asp:Label> <asp:TextBox ID="txtNome" runat="server" Width="343px"></asp:TextBox><br /> <asp:Label ID="Label2" runat="server" Text="Endereco" Font-Bold="True" Width="100px"></asp:Label> <asp:TextBox ID="txtEndereco" runat="server" Width="344px"></asp:TextBox><br /> <asp:Label ID="Label3" runat="server" Text="Telefone" Font-Bold="True" Width="100px"></asp:Label> <asp:TextBox ID="txtTelefone" runat="server"></asp:TextBox><br /> <asp:Label ID="Label4" runat="server" Text="Email" Font-Bold="True" Width="100px"></asp:Label> <asp:TextBox ID="txtEmail" runat="server" Width="343px"></asp:TextBox><br /> <asp:Button ID="btn_inserir" runat="server" Text="Inserir Registro" Font-Bold="True" onclick="btn_inserir_Click" /> <p> <asp:Label ID="lblmsg" runat="server" Font-Bold="True" Width="464px" Font-Size="Medium" ForeColor="#CC0000"></asp:Label> </p> </div> </p> </asp:Content> |
![]() |
Vamos agora definir o código do arquivo code-behind Inserir.aspx.vb:
Inclua o código abaixo no arquivo Inserir.aspx.vb:
Imports System.Data.SqlClient Imports System.Configuration Public Class Inserir Inherits System.Web.UI.Page Dim strConnString As String = ConfigurationManager.ConnectionStrings.Item("ConexaoSQLServer").ToString() Dim con As New SqlConnection(strConnString) Dim str As String Dim com As SqlCommand Dim sqlda As SqlDataAdapter Dim ds As DataSet Protected Sub btn_inserir_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btn_inserir.Click If txtNome.Text <> String.Empty And txtEndereco.Text <> String.Empty Then Try con.Open() str = "insert into clientes(nome,endereco,telefone,email) values('" & txtNome.Text & "','" & txtEndereco.Text & "','" & txtTelefone.Text & "','" & txtEmail.Text & "')" com = New SqlCommand(str, con) com.ExecuteNonQuery() con.Close() Response.Redirect("Exibir.aspx") Catch ex As Exception lblmsg.Text = ex.Message End Try Else lblmsg.Text = "Informe o nome e o endereço do cliente" End If End Sub End Class |
Este código obtém a string de conexão do arquivo web.config e trata o evento Click do botão de comando Inserir Registro.
No evento Click verificamos e o nome e o endereço foram informados e usamos uma instrução SQL Server - Insert into - para incluir novo registro na tabela Clientes.
Após isso o usuário é direcionado para a página Exibir.aspx.
Exibindo os registros
Agora abra a página Exibir.aspx e inclua o código abaixo que irá exibir os registros da tabela Clientes em um controle GridView (gdvClientes):
<%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/Site.Master" CodeBehind="Exibir.aspx.vb" Inherits="AtualizandoInserindoDados.Exibir" %> <asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server"> </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> <asp:GridView runat="server" ID="gdvClientes" AutoGenerateColumns="false" HeaderStyle-BackColor="#7779AF" HeaderStyle-ForeColor="White" DataKeyNames="id" ForeColor="#663300" Font-Bold="True" Height="102px" Width="415px"> <Columns> <asp:TemplateField HeaderText="Cliente"> <ItemTemplate> <a href ='<%#"Atualizar.aspx?id=" & DataBinder.Eval(container.dataitem,("id")) %>'> <%#Eval("nome")%> </a> </ItemTemplate > </asp:TemplateField> <asp:BoundField DataField="nome" HeaderText="Nome" /> <asp:BoundField DataField="endereco" HeaderText="Endereço" /> <asp:BoundField DataField="telefone" HeaderText="Telefone" /> <asp:BoundField DataField="email" HeaderText="Email" /> </Columns> <HeaderStyle BackColor="Red" ForeColor="White"></HeaderStyle> <AlternatingRowStyle ForeColor="#003300" /> </asp:GridView> <p> <asp:Label ID="lblmsg" runat="server" Font-Bold="True" Width="464px" Font-Size="Medium" ForeColor="#CC0000"></asp:Label> </p> </asp:Content> |
![]() |
![]() |
O código da página Atualizar.aspx define um GridView que exibe os registros da tabela Clientes.
A coluna Cliente é um TemplateField que é definido como um link que chama a página Atualizar.aspx passando o código do cliente (id) como parâmetro: "Atualizar.aspx?id=" onde o id é obtido do campo da tabela Clientes.
<asp:TemplateField
HeaderText="Cliente">
<ItemTemplate>
<a href ='<%#"Atualizar.aspx?id=" &
DataBinder.Eval(container.dataitem,("id")) %>'>
<%#Eval("nome")%> </a>
</ItemTemplate >
</asp:TemplateField>
Vamos agora definir o código do arquivo code-behind Exibir.aspx.vb conforme a seguir:
Imports System.Data.SqlClient Imports System.Configuration Public Class Exibir Inherits System.Web.UI.Page Dim strConnString As String = System.Configuration.ConfigurationManager.ConnectionStrings.Item("ConexaoSQLServer").ToString() Dim con As New SqlConnection(strConnString) Dim str As String Dim com As SqlCommand Dim sqlda As SqlDataAdapter Dim ds As DataSet Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If Not IsPostBack Then vincular() End If End Sub Sub vincular() Try con.Open() str = "select * from clientes" com = New SqlCommand(str, con) sqlda = New SqlDataAdapter(com) con.Close() ds = New DataSet() sqlda.Fill(ds, "cliente") gdvClientes.DataSource = ds gdvClientes.DataMember = "cliente" gdvClientes.DataBind() Catch ex As Exception lblmsg.Text = ex.Message End Try End Sub End Class |
No código acima usamos a rotina Vincular() para selecionar todos os registros (Select * from) da tabela Clientes e criamos um dataset preenchendo-o com o resultado da consulta sql e exibindo os registros no controle gridview - gdvClientes.
Atualizando registros
Agora abra a página Atualizar.aspx e inclua o código abaixo que irá permitir atualizar os registros da tabela Clientes:
<%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/Site.Master" CodeBehind="Atualizar.aspx.vb" Inherits="AtualizandoInserindoDados.Atualizar" %> <asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" runat="server"> <style type="text/css"> .style1 { width: 420px; } </style> </asp:Content> <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server"> <script type="text/javascript"> function Display(nome) { alert(nome + '::: atualizado com sucesso'); if (alert) { window.location = 'Default.aspx'; } } </script> <div> <table> <tr> <td colspan="2" align="center"> <b>Editar Clientes</b> </td> </tr> <tr> <td> Nome: </td> <td class="style1"> <asp:Label ID="lblNome" runat="server" /> </td> </tr> <tr> <td> Nome: </td> <td class="style1"> <asp:TextBox ID="txtNome" runat="server" Width="399px"></asp:TextBox> </td> </tr> <tr> <td> Endereço: </td> <td class="style1"> <asp:TextBox ID="txtEndereco" runat="server" Width="399px"></asp:TextBox> </td> </tr> <tr> <td> Telefone: </td> <td class="style1"> <asp:TextBox ID="txtTelefone" runat="server"></asp:TextBox> </td> </tr> <tr> <td> Email: </td> <td class="style1"> <asp:TextBox ID="txtEmail" runat="server" Width="399px"></asp:TextBox> </td> </tr> <tr> <td> </td> <td class="style1"> <asp:Button ID="btnAtualizar" runat="server" Text="Atualizar" OnClick="btnAtualizar_Click" /> <asp:Button ID="btnCancelar" runat="server" Text="Cancelar" OnClick="btnCancelar_Click" /> </td> </tr> </table> <p> <asp:Label ID="lblmsg" runat="server" Font-Bold="True" Width="497px" Font-Size="Medium" ForeColor="#CC0000"></asp:Label> </p> </div> </asp:Content> |
![]() |
No código acima temos a declaração da função javascript Display() que irá exibir uma mensagem quando o cliente for atualizado.
A seguir é montado o formulário para permitir que o usuário altere os dados do cliente usando o botão atualizar ou cancelar a operação retornando à página Default.aspx.
Vamos agora definir o código do arquivo code-behind Atualizar.aspx.vb conforme abaixo:
Imports System.Data.SqlClient Imports System.Configuration Public Class Atualizar Inherits System.Web.UI.Page Dim strConnString As String = System.Configuration.ConfigurationManager.ConnectionStrings.Item("ConexaoSQLServer").ToString() Dim con As New SqlConnection(strConnString) Dim str As String Dim com As SqlCommand Dim sqlda As SqlDataAdapter Dim ds As DataSet Dim id As Integer = 0 Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load If Not IsNothing(Request.QueryString("id")) Then id = Convert.ToInt32(Request.QueryString("id").ToString()) Else id = 1 End If If Not IsPostBack Then vincular() End If End Sub Sub vincular() Try con.Open() str = "select * from clientes where id=" & id com = New SqlCommand(str, con) sqlda = New SqlDataAdapter(com) com.ExecuteNonQuery() con.Close() ds = New DataSet() sqlda.Fill(ds) lblNome.Text = ds.Tables(0).Rows(0)(1).ToString() txtNome.Text = ds.Tables(0).Rows(0)(1).ToString() txtEndereco.Text = ds.Tables(0).Rows(0)(2).ToString() txtTelefone.Text = ds.Tables(0).Rows(0)(3).ToString() txtEmail.Text = ds.Tables(0).Rows(0)(4).ToString() Catch ex As Exception lblmsg.Text = ex.Message End Try End Sub Protected Sub btnCancelar_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnCancelar.Click Response.Redirect("~/Default.aspx") End Sub Protected Sub btnAtualizar_Click(ByVal sender As Object, ByVal e As EventArgs) Handles btnAtualizar.Click Try con.Open() str = "update clientes set nome='" & txtNome.Text & "',endereco='" & txtEndereco.Text & "',telefone='" & txtTelefone.Text & "',email='" & txtEmail.Text & "' where id=" & id com = New SqlCommand(str, con) sqlda = New SqlDataAdapter(com) Dim resultado As Integer resultado = com.ExecuteNonQuery() con.Close() If resultado = 1 Then ScriptManager.RegisterStartupScript(Me, Me.GetType(), "Sucesso", "javascript:Display('" & lblNome.Text & "')", True) End If Catch ex As Exception lblmsg.Text = ex.Message End Try End Sub End Class |
Este código primeiro seleciona o registro da tabela clientes com o id informado e exibe os dados para alteração.
O id é obtido no evento Load da página através do código : id = Convert.ToInt32(Request.QueryString("id").ToString())
Note que estamos verificando se o id obtido via QueryString é nulo e em caso positivo atribuímos o valor 1 ao id de forma que se o usuário clicar diretamente no menu Atualizar um registro possa ser exibido. Esta é uma solução para contornar o erro que ocorre nessa situação que eu estou usando por pura preguiça de definir outra solução mais robusta. Como meu objetivo é mostrar como inserir, atualizar e exibir registro deixo essa tarefa para você.
No evento Click do botão Atualizar temos o código que atualiza os dados usando uma instrução SQL (update Clientes set).
A mensagem javascript indicando que a atualização foi feita com sucesso é feita pelo código:
If resultado = 1
Then
ScriptManager.RegisterStartupScript(Me,
Me.GetType(), "Sucesso",
"javascript:Display('" & lblNome.Text &
"')", True)
End If
Obs:A partir da ASP.NET 2.0 temos a nova propriedade Page.ClientScript para registrar e colocar funções JavaScript em suas páginas ASP.NET, os métodos Page.RegisterStartUpScript e Page.RegisterClientScriptBloc da versão 1.0/1.1 da plataforma .NET podem ser considerados obsoletos pois agora você tem que fornecer o conjunto de parâmetros chave/script para registrar scripts do lado do cliente.
Pegue o projeto completo
aqui : AtualizandoInserindoDados.zip
Heb 1:5
Pois a qual dos anjos disse jamais: Tu és meu Filho, hoje te gerei? E outra vez: Eu lhe serei Pai, e ele me será Filho?Heb 1:6
E outra vez, ao introduzir no mundo o primogênito, diz: E todos os anjos de Deus o adorem.Heb 1:7
Ora, quanto aos anjos, diz: Quem de seus anjos faz ventos, e de seus ministros labaredas de fogo.Heb 1:8
Mas do Filho diz: O teu trono, ó Deus, subsiste pelos séculos dos séculos, e cetro de eqüidade é o cetro do teu reino.Referências: