WCF
- Inserindo dados no SQL Server
Este artigo apresenta o modo de inserir dados em SQL Server 2008 usando um serviço WCF a partir de código C#.
Para inserir dados em um banco de dados SQL Server usando um serviço WCF, devemos fazer realizar as seguintes ações:
Na primeira etapa, vamos criar um banco de dados e a tabela no SQL Server, depois disso criamos uma função simples para inserir dados no banco de dados usando um serviço WCF.
A seguir criaremos uma aplicação web onde vamos incluir uma referência ao serviço e aos dados a serem inseridos sendo que as informações serão enviados para a função de serviços e serão inseridos na tabela do banco de dados.
A aplicação exemplo foi desenvolvida no Visual Web Developer 2010 Express(VWD 2010) e no SQL Server 2008.
A tecnologia WCF - Windows Communication Foundation, surgiu com a .NET Framework 3.0 com o objetivo de unificar as até então existentes tecnologias de programação distribuidas como: COM+ , MSMQ-Message Queue, Enterprise Services, .NET Remoting e Web Services.
Com o advento da WCF foi criada uma plataforma com uma API que facilitou de forma considerável o desenvolvimento de aplicações distribuídas visto que o WCF não esta acoplado as regras de negócio que deverão ser expostas pelo serviço.
Para iniciar com o WCF existem alguns conceitos básicos que você deve conhecer para projetar, implementar e hospedar os seus serviços. Na verdade os templates WCF fornecidos no Visual Studio simplificam muito este processo visto que eles fornecem um serviço modelo que pode ser imediatamente hospedado e testado com as ferramentas de teste WCF. Assim chamar um serviço WCF a partir de um cliente é também uma tarefa simples , basta gerar um proxy e escrever o código contra o seu modelo de objetos.
Criando o banco de dados
Crie o banco de dados chamado Escola usando o SQL Server Management Studio e a seguir crie a tabela Acesso contendo os campos : id, login, senha e email:
![]() |
O comando SQL para criar a tabela pode ser :
CREATE
TABLE [dbo].[Acesso]
(
[login] [varchar](50) NOT NULL,
[senha] [varchar](50) NOT NULL,
[email] [varchar](150) NOT NULL
)
Criando o serviço WCF
A seguir crie o projeto WCF usando o VWD 2010 com o nome WcfService_InserirDados_SQLServer;
Abra o VWD 2010 Express e no menu File clique em New Project;
Selecione a linguagem C# e o template WCF e a seguir WCF Service Application;
Informe o nome WcfService_InserirDados_SQLServer e clique em OK;
![]() |
Será criado um projeto com a estrutura abaixo mostrada na janela Solution Explorer:
![]() |
Vamos definir o contrato e o contrato de dados na interface IService conforme o código a seguir:
Lembre-se que a interface define apenas as assinaturas dos métodos que deverão ser implementados por uma classe concreta;
using System.ServiceModel;
namespace WcfService_InserirDados_SQLServer
{
[ServiceContract]
public interface IService1
{
[OperationContract]
string InserirUsuarios(Usuarios _usuario);
}
[DataContract]
public class Usuarios
{
int _id;
string _login = string.Empty;
string _senha = string.Empty;
string _email = string.Empty;
[DataMember]
public string Login
{
get { return _login; }
set { _login = value; }
}
[DataMember]
public string Senha
{
get { return _senha; }
set { _senha = value; }
}
[DataMember]
public string Email
{
get { return _email; }
set { _email = value; }
}
[DataMember]
public int ID
{
get { return _id; }
set { _id = value; }
}
}
}
|
A primeira etapa para
criar um serviço WCF e efetuar a definição do
contrato pois é
o contrato Obs: O contrato é uma interface que
contém as assinaturas dos métodos que serão expostos. Contratos
de serviços (Service Contracts) - Descrevem as operações que um
serviço pode Contratos de Dados (Data
Contracts) -
Descreve a estrutura de dados usada no serviço. Um Data
Contract especifica para cada parâmetro ou tipo de
retorno qual informação será Definimos o contrato de serviço: InserirUsuarios e o contrato de dados Usuarios. Neste processo realizamos as seguintes tarefas:
|
Agora vamos implementar o método InserirUsuarios na classe Service1 no arquivo code-behind Service.svc digitando o código conforme abaixo:
using System.Data.SqlClient;
namespace WcfService_InserirDados_SQLServer
{
// NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "Service1" in code, svc and config file together.
public class Service1 : IService1
{
public string InserirUsuarios(Usuarios usuario)
{
string Mensagem;
SqlConnection con = new SqlConnection(@"Data Source=.\SQLEXPRESS;Initial Catalog=Escola;Integrated Security=True;");
con.Open();
SqlCommand cmd = new SqlCommand("insert into Acesso(login,senha,email) values(@Login,@Password,@Email)", con);
cmd.Parameters.AddWithValue("@Login", usuario.Login);
cmd.Parameters.AddWithValue("@Password", usuario.Senha);
cmd.Parameters.AddWithValue("@Email", usuario.Email);
int resultado = cmd.ExecuteNonQuery();
if (resultado == 1)
{
Mensagem = usuario.Login + " inserido com sucesso.";
}
else
{
Mensagem = usuario.Login + " não foi inserido.";
}
con.Close();
return Mensagem;
}
}
}
|
Pressione F5 para executar o serviço. Um formulário WCF Test Client será exibido e vai executar o serviço.
![]() |
Agora clique duas vezes sobre o método InserirUsuarios() da interface IService1. A guia InserirUsuarios será exibida.
![]() |
Após isso o serviço foi adicionado com êxito.
Vamos agora abrir o serviço no navegador, para isso com o botão direito do mouse clique sobre o arquivo service1.vcs e a seguir em View in Browser;
![]() |
Copie a URL : http://localhost:58779/Service1.svc (no seu exemplo provavelmente a porta será diferente) para usá-la mais adiante.
Criando a aplicação WEB
Vamos criar a aplicação WEB que irá consumir o serviço WCF criado.
No menu File clique em Add -> New Project selecione o template ASP .NET Web Application e informe o nome AdicionarUsuarios;
|
Vamos incluir no projeto web a referência ao serviço WCF.
Clique com o botão direito do mouse sobre o Projeto Web e selecione o item Add Service Reference...
![]() |
Será aberta a janela mostrada abaixo:
![]() |
Vamos colar URL que copiamos quando abrimos o serviço no navegador na caixa de texto Address e clicar no botão Go:
![]() |
Deveremos ver o serviço criado e na área Operations o método InserirUsuarios do serviço;
Clique no botão OK para incluir a referência no projeto:
![]() |
Agora abra a página Default.aspx e digite o código abaixo para gerar a interface com usuário.
Iremos criar uma página com 3 campos para incluir os dados de login, senha e email na tabela Acesso;
<%@ Page Title="Home Page" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true"
CodeBehind="Default.aspx.cs" Inherits="InserirUsuariosWeb._Default" %>
<asp:Content ID="HeaderContent" runat="server" ContentPlaceHolderID="HeadContent">
</asp:Content>
<asp:Content ID="BodyContent" runat="server" ContentPlaceHolderID="MainContent">
<div>
<table width="84%" cellpadding="0" cellspacing="0" style="border: solid 1px #3366CC;">
<tr>
<td colspan="4" style="height: 30px; background-color: #f5712b;">
<span class="TextTitle" style="color: #FFFFFF;">Formulário de Registro</span>
</td>
</tr>
<tr>
<td height="20px" colspan="0">
</td>
</tr>
<tr>
<td width="50%" valign="top">
<table id="TableLogin" class="HomePageControlBGLightGray" cellpadding="4" cellspacing="4"
runat="server" width="100%">
<tr>
<td colspan="3" align="center">
<asp:Label ID="LabelMessage" ForeColor="Red" runat="server" EnableViewState="False"
Visible="False"></asp:Label><br>
</td>
</tr>
<tr style="font-weight: normal; color: #000000">
<td align="right">
<span>Login :</span>;
</td>
<td align="left" style="padding-left: 10px;">
<asp:TextBox ID="TextBoxUserName" runat="server" CssClass="textbox" Width="262px"
MaxLength="50" Height="34px"></asp:TextBox>
</td>
</tr>
<tr>
<td align="right">
<span class="TextTitle">Senha :</span>
</td>
<td align="left" style="padding-left: 10px;">
<asp:TextBox ID="TextBoxPassword" runat="server" CssClass="textbox" Width="261px"
MaxLength="50" TextMode="Password" Height="34px"></asp:TextBox>
<br />
</td>
</tr>
<tr>
<td align="right">
<span class="TextTitle">Email :</span>
</td>
<td align="left" style="padding-left: 10px;">
<asp:TextBox ID="TextBoxEmail" runat="server" CssClass="textbox" Width="261px"
MaxLength="50" Height="34px"></asp:TextBox>
<br />
</td>
</tr>
<tr>
<td align="right">
</td>
<td align="left" style="padding-left: 10px;">
<asp:Button ID="Button1" runat="server" Text="Inserir" OnClick="Button1_Click" Width="87px" />
<br />
</td>
</tr>
</table>
</td>
</tr>
</table>
</asp:Content>
|
A aparência do formulário deverá ser a seguinte:
![]() |
No evento Click do botão de comando inclua o código abaixo que irá instanciar o serviço criado e usar o método exposto para inserir dados no SQL Server;
using System;
using InserirUsuariosWeb.ServiceReference1;
namespace InserirUsuariosWeb
{
public partial class _Default : System.Web.UI.Page
{
ServiceReference1.Service1Client servicoReferencia = new ServiceReference1.Service1Client();
protected void Page_Load(object sender, EventArgs e)
{}
protected void Button1_Click(object sender, EventArgs e)
{
try
{
Usuarios _usuario = new Usuarios();
_usuario.Login = TextBoxUserName.Text;
_usuario.Senha = TextBoxPassword.Text;
_usuario.Email = TextBoxEmail.Text;
string resultado = servicoReferencia.InserirUsuarios(_usuario);
LabelMessage.Text = resultado;
}
catch (Exception ex)
{
LabelMessage.Text = ex.Message;
}
}
}
}
|
Obtemos os dados do formulário e após criar uma instância do serviço usamos o método InserirUsuarios passando o objeto _usuarios com as informações para inclusão no SQL Server.
Execute a aplicação e a tela abaixo será apresentada. Informando alguns valores e clicando em Inserir:
![]() |
Examinando o banco de dados Escola e a tabela Acesso com o SQL Server Management Studio veremos a informação gravada no banco de dados:
![]() |
Vimos assim como é simples usar os recursos do WCF para gerenciar informações no SQL Server. Em outro artigo irei mostrar como realizar as operações CRUD usando um serviço WCF.
Pegue o projeto completo
aqui:
WcfService_InserirDados_SQLServer.zip
Aquele que vem de cima é sobre todos; aquele que vem da terra é da terra, e fala da terra. Aquele que vem do céu é sobre todos.Joã 3:31
Joã 3:32
Aquilo que ele tem visto e ouvido, isso testifica; e ninguém aceita o seu testemunho.Joã 3:33
Mas o que aceitar o seu testemunho, esse confirma que Deus é verdadeiro.Joã 3:34
Pois aquele que Deus enviou fala as palavras de Deus; porque Deus não dá o Espírito por medida.Joã 3:35
O Pai ama ao Filho, e todas as coisas entregou nas suas mãos.Joã 3:36
Quem crê no Filho tem a vida eterna; o que, porém, desobedece ao Filho não verá a vida, mas sobre ele permanece a ira de Deus.Referências:
Super DVD Vídeo Aulas - Vídeo Aula sobre VB .NET, ASP .NET e C#