ASP.NET - Editando dados no SQL Server
No artigo - ASP.NET - Servidor ASP.NET grátis com acesso a SQL Server - vimos como criar uma conta em um servidor ASP.NET e ter acesso a um banco de dados SQL Server. Vimos também como acessar tabelas do banco de dados e exibir dados em páginas ASP.NET. Na
sequência mostrei como podemos incluir novos dados no SQL Server no artigo - ASP.NET - Inserindo dados no SQL Server.
Dando continuidade neste artigo irei abordar a alteração de dados. Desta forma você fica com um sistema web quase completo : exibindo , incluindo e alterando dados em uma base de dados SQL Server.
Vamos alterar os dados da tabela clientes criada no primeiro artigo e permitir a alteração dos dados incluídos através de uma página ASP.NET. Vou chamar a página de editaSQL.aspx. Ao executar a página teremos o resultado mostrado na figura abaixo:
O projeto funciona assim:
- Ao carregar a página os dados da tabela são exibidos no componente List .
- O usuário deverá selecionar um nome e clicar no botão - Editar Registro.
- Os dados serão então exibidos nas caixas de texto.
- O usuário realiza as alterações e clica no botão - Atualizar
- Os dados são gravados na tabela
- Para exibir os dados o usuário clica no link - Exibir Clientes
Novamente vou utilizar o Web Matrix para criar o formulário e o código da página editaSQL.aspx.
- Abra o Web Matrix e crie uma nova página ASP.NET com o nome EditaSQL.aspx.
- Na aba Design inclua os seguintes componentes a partir da toolbox : 1 List , 2 TextBox , 2 Button e 1 label
O código completo da página pode ser vista na aba All é dado a seguir:
<%@ Page Language="vb" %> <%@ import Namespace="System.Data" %> <%@ import Namespace="System.Data.SQLClient" %> <script runat="server"> Dim codigo as integer Dim nome , email as string Sub Page_Load(Source as Object, E as EventArgs) if not Page.IsPostBack then BindData End If End Sub Sub BindData() Dim sql as string = "Select codigo, nome , email from clientes" Dim myConn As SqlConnection = New SqlConnection(ConfigurationSettings.AppSettings("conexaoSQL")) Dim Cmd as New SQLCommand(sql, MyConn) Dim objDR as SQLDataReader Myconn.Open() objDR=Cmd.ExecuteReader(system.data.CommandBehavior.CloseConnection) list1.datasource=objDR list1.DataValueField="codigo" list1.datatextfield="nome" list1.databind list1.selectedindex=0 Myconn.Close() End Sub Sub EditaRegistro(Source as Object, E as EventArgs) Dim sql as string = "Select codigo, nome, email from Clientes Where codigo = " & list1.selecteditem.value Dim objDR as SQLDataReader Dim myConn As SqlConnection = New SqlConnection(ConfigurationSettings.AppSettings("conexaoSQL")) Dim Cmd as New SQLCommand(sql, MyConn) Myconn.Open() objDR=Cmd.ExecuteReader(system.data.CommandBehavior.CloseConnection) While objDR.Read() codigo=objDR("codigo") nome=objDR("nome") email=objDR("email") End While page.databind() label1.text="" End Sub Sub Atualiza(Source as Object, E as EventArgs) Dim sql as string = "Update Clientes Set nome=@nome, email=@email Where codigo=@codigo" Dim myConn As SqlConnection = New SqlConnection(ConfigurationSettings.AppSettings("conexaoSQL")) Dim Cmd as New SQLCommand(sql, MyConn) cmd.Parameters.Add(New SQLParameter("@codigo", lblID.text)) cmd.Parameters.Add(New SQLParameter("@nome", frmnome.text)) cmd.Parameters.Add(New SQLParameter("@email", frmemail.text)) MyConn.Open() cmd.ExecuteNonQuery label1.text="Dados atualizados com sucesso ! " BindData list1.SelectedIndex=List1.Items.IndexOf(List1.Items.FindByValue(lblID.text)) End Sub </script> <html> <head> <title>Atualizando dados no SQL Server</title> </head> <body> <h2><font face="Trebuchet MS" color="#8080ff">Atualizando dados no SQL Server</font> </h2> <form name="form1" runat="server"> <table style="WIDTH: 654px; HEIGHT: 239px" width="654" border="0"> <tbody> <tr> <td valign="top" align="middle" width="145"> <font face="Trebuchet MS"><font color="red"><b><i>Selecione um nome da lista :</i></b> <br /> </font></font> <asp:ListBox id="list1" runat="server" Font-Size="X-Small" Font-Names="Trebuchet MS" Width="186px" height="150px"> </asp:ListBox> <font face="Trebuchet MS"> </font> <asp:button id="button1" onclick="EditaRegistro" runat="server" Text="Editar registro"></asp:button> </td> <td valign="top" align="left"> <p> <font face="Trebuchet MS"><b><font size="2"></font></b></font> </p> <p> <font face="Trebuchet MS"><b><font size="2">Codigo</font> :</b> </font> <asp:Label id="lblID" runat="server" font-names="Trebuchet MS" font-bold="True" text="<%# codigo %>" forecolor="Red"></asp:Label> <br /> <b><font face="Trebuchet MS"><font size="2">Nome :</font> </font></b> <asp:textbox id="frmnome" runat="server" Width="213px" Text="<%# nome %>"></asp:textbox> <br /> <b><font face="Trebuchet MS"><font size="2">Email :</font> </font></b> <asp:textbox id="frmemail" runat="server" Width="317px" Text="<%# email %>"></asp:textbox> <br /> <br /> <font face="Trebuchet MS"></font> <asp:button id="button2" onclick="Atualiza" runat="server" Text="Aualizar"></asp:button> <font face="Trebuchet MS"></font><i> <asp:Label id="label1" runat="server" font-names="Trebuchet MS" font-bold="True" forecolor="Red" font-size="X-Small"> </asp:Label></i> <br /> <i><font face="Trebuchet MS"></font></i> </p> <p align="center"> <font face="Trebuchet MS"><strong><a href="default.aspx">Exibir Clientes</a></strong></font> </p> <p> <i> </i> </p> </td> </tr> </tbody> </table> </form> </body> </html>
|
O código possui três rotinas principais:
BindData() - Exibe os dados no componente List
EditaRegistro(Source as Object, E as EventArgs) - Faz a edição de registros da tabela Clientes.
Atualiza(Source as Object, E as EventArgs) - Atualiza a tabela clientes com as alterações usando a instrução SQL Update.
Eu sei , é apenas ASP.NET , mas eu gosto..
José Carlos Macoratti