ASP .NET - Criando um Web Service para acessar dados


  Neste artigo vamos recordar como criar um web service para acessar dados de um banco de dados SQL Server.

Os  Web Services são antigos e eu já publiquei alguns artigos sobre o assunto nos links abaixo:

Agora vamos ao que interessa.

Escolhendo o Banco de dados

Primeiro escolha um banco de dados que você deseja acessar. Pode ser qualquer um, e, para este artigo, eu vou acessar a tabela Produtos do banco de dados Cadastro.mdf.

Abaixo temos a estrutura da tabela Produtos e a string de conexão com o banco de dados que iremos usar:

CREATE TABLE [dbo].[Produtos] (
 [Id] INT IDENTITY (1, 1) NOT NULL,
 [Nome] NVARCHAR (50) NOT NULL,
 [Descricao] NVARCHAR (150) NULL,
 [Preco] MONEY NOT NULL,
 [Estoque] INT NULL,
CONSTRAINT [PK_Produtos] PRIMARY KEY CLUSTERED ([Id] ASC)
);	
string de conexão : Data Source=MACORATTI;Initial Catalog=Cadastro;Integrated Security=True

Criando o projeto Web Forms

Agora vamos criar um projeto ASP .NET Web Forms.

Abra o VS 2017 Community e escolha o template Visual C# -> Web -> ASP .NET Web Application (.NET Framework);

A seguir marque Web Forms e escolha o template Empty e clique em OK:

Criando o Web Service

No menu Project clique em Add New Item e escolha o template Web Service (ASMX) e informe o nome ServiceDB.asmx e clique em Add;

Altere o código do arquivo ServiceDB.asmx conforme abaixo:

using System.Configuration;
using System.Data;
using System.Data.SqlClient;
using System.Web.Services;
namespace AspnWebServiceDB
{
    /// <summary>
    /// Summary description for ServiceDB
    /// </summary>
    [WebService(Namespace = "http://tempuri.org/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [System.ComponentModel.ToolboxItem(false)]
    // To allow this Web Service to be called from script, using ASP.NET AJAX, uncomment the following line. 
    //[System.Web.Script.Services.ScriptService]
    public class ServiceDB : System.Web.Services.WebService
    {
        [WebMethod]
        public DataTable GetDados()
        {
            string constr = ConfigurationManager.ConnectionStrings["conexaoProdutos"].ConnectionString;
            using (SqlConnection con = new SqlConnection(constr))
            {
                using (SqlCommand cmd = new SqlCommand("SELECT * FROM Produtos"))
                {
                    using (SqlDataAdapter sda = new SqlDataAdapter())
                    {
                        cmd.Connection = con;
                        sda.SelectCommand = cmd;
                        using (DataTable dt = new DataTable())
                        {
                            dt.TableName = "Produtos";
                            sda.Fill(dt);
                            return dt;
                        }
                    }
                }
            }
        }
    }
}

Precisamos incluir a string de conexão usada no arquivo Web.Config :

</configuration
   .....
   .....
  </system.codedom>
  <connectionStrings>
    <add name="conexaoProdutos" connectionString="Data Source=MACORATTI;Initial Catalog=Cadastro;Integrated Security=True" providerName="System.Data.SqlClient"/>
  </connectionStrings>
</configuration

Incluindo uma referência ao Web Service no projeto

Selecione o projeto AspnWebServiceDB e no menu Project clique em Add Service Reference:

Clique no botão Discover e a seguir em Services in Solution;

O serviço ServiceDB.asmx será localizado conforme abaixo. Se desejar, altere o nome do namespace a seu gosto, eu alterei para ServiceDados, e clique em OK;

Usando o web service

Vamos agora incluir uma nova página .aspx no projeto via menu Project -> Add New Item escolhendo o template Web Form e informando o nome Default.aspx.

Nesta página inclua a partir da ToolBox um controle GridView alterando o seu nome para gdvProdutos e configure-o para exibir o Id, o Nome e o Preco do produto conforme mostra o código abaixo da página Default.aspx:

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="AspnWebServiceDB.Default" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
    <style type="text/css">
        .auto-style1 {
            color: #0033CC;
        }
    </style>
</head>
<body>
    <form id="form1" runat="server">
        <h1 class="auto-style1">Relação de Produtos</h1>
        <hr />
        <div>
            <asp:GridView ID="gdvProdutos" runat="server" AutoGenerateColumns="false">
                 <Columns>
                    <asp:TemplateField HeaderText="Id" ItemStyle-Width="50">
                        <ItemTemplate>
                            <asp:Label ID="lblId" runat="server" Text='<%# Eval("Id") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Nome" ItemStyle-Width="150">
                        <ItemTemplate>
                            <asp:Label ID="lblNome" runat="server" Text='<%# Eval("Nome") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                    <asp:TemplateField HeaderText="Preço" ItemStyle-Width="150">
                        <ItemTemplate>
                            <asp:Label ID="lblPreco" runat="server" Text='<%# Eval("Preco") %>'></asp:Label>
                        </ItemTemplate>
                    </asp:TemplateField>
                </Columns>
            </asp:GridView>
        </div>
    </form>
</body>
</html>

Para concluir inclua o código abaixo no arquivo code-behind Default.aspx.cs :

using System;
namespace AspnWebServiceDB
{
    public partial class Default : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            if (!this.IsPostBack)
            {
                this.VinculaDados();
            }
        }
        private void VinculaDados()
        {
            ServiceDB service = new ServiceDB();
            gdvProdutos.DataSource = service.GetDados();
            gdvProdutos.DataBind();
        }
    }
}

Executando o projeto iremos obter o seguinte resultado:

Na próxima parte do artigo veremos como fazer a chamada do web service usando jQuery.

Pegue o projeto aqui :  AspnWebServiceDB.zip (sem as referências)

Disseram-lhe, pois: Onde está teu Pai? Jesus respondeu: Não me conheceis a mim, nem a meu Pai; se vós me conhecêsseis a mim, também conheceríeis a meu Pai.
João 8:19

Veja os Destaques e novidades do SUPER DVD Visual Basic (sempre atualizado) : clique e confira !

Quer migrar para o VB .NET ?

Quer aprender C# ??

Quer aprender os conceitos da Programação Orientada a objetos ?

Quer aprender o gerar relatórios com o ReportViewer no VS 2013 ?

Quer aprender a criar aplicações Web Dinâmicas usando a ASP .NET MVC 5 ?

 

Gostou ?   Compartilhe no Facebook   Compartilhe no Twitter

Referências:


José Carlos Macoratti