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:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#
Super DVD C# - Recursos de aprendizagens e vídeo aulas para C#
Curso Fundamentos da Programação Orientada a Objetos com VB .NET
VB.NET - Usando a API do Google (Web Services) - Macoratti.net