Partilhar via


Passo a passo: usando procedimentos armazenados

Você não pode chamar um procedimento armazenado em um banco de dados do SQL Server diretamente do LightSwitch, mas pode criar uma tabela local no seu aplicativo LightSwitch que contém os parâmetros para o procedimento armazenado e, em seguida, chamar o procedimento armazenado em um evento de camada de servidor. Este passo a passo mostra como inserir registros de cliente em um banco de dados SQL usando procedimentos armazenados.

Muitos administradores de banco de dados não permitem acesso direto às tabelas. Em vez disso, expõem exibições somente leitura e fornecem procedimentos armazenados para inserir, atualizar e excluir registros. Como o LightSwitch não reconhece procedimentos armazenados, qualquer banco de dados que confie em procedimentos armazenados para atualizar registros pode ser aparentemente inutilizável no início. Se fizer um pouco de trabalho adicional, você certamente poderá usar esses bancos de dados do LightSwitch.

Pré-requisitos

Esta explicação passo a passo usa o banco de dados de exemplo Northwind.

Criar um procedimento armazenado

Na maioria dos casos, você irá acessar procedimentos armazenados já existentes em um banco de dados. Como o banco de dados Northwind não tem os procedimentos armazenados necessários para inserir registros de cliente, portanto, você deve adicioná-los.

Para adicionar um procedimento armazenado

  1. Na barra de menus, escolha Exibir, Pesquisador de Objetos do SQL Server.

  2. Na janela Pesquisador de Objetos do SQL Server, expanda o nó do banco de dados NORTHWIND e escolha Programação.

  3. Expanda o nó Programação e escolha Procedimentos Armazenados.

  4. Abra o menu de atalho de Procedimentos Armazenados e escolha Adicionar Novo Procedimento Armazenado.

  5. No Editor de Códigos, substitua o conteúdo pelo seguinte código Transact-SQL e escolha o botão Atualizar.

    CREATE Procedure [dbo].[InsertCustomer]
        @CustomerID nchar(5),
        @CompanyName nvarchar(40),
        @ContactName nvarchar(30),
        @ContactTitle nvarchar(30),
        @Address nvarchar(60),
        @City nvarchar(15),
        @Region nvarchar(15),
        @PostalCode nvarchar(10),
        @Country nvarchar(15),
        @Phone nvarchar(24),
        @Fax nvarchar(24)
    AS
    INSERT INTO [dbo].[Customers]
               ([CustomerID]
               ,[CompanyName]
               ,[ContactName]
               ,[ContactTitle]
               ,[Address]
               ,[City]
               ,[Region]
               ,[PostalCode]
               ,[Country]
               ,[Phone]
               ,[Fax])
         VALUES
               (@CustomerID
               ,@CompanyName
               ,@ContactName
               ,@ContactTitle
               ,@Address
               ,@City
               ,@Region
               ,@PostalCode
               ,@Country
               ,@Phone
               ,@Fax)
    
  6. Na caixa de diálogo Visualizar Atualizações de Banco de Dados, escolha o botão Atualizar Banco de Dados.

    O procedimento armazenado InsertCustomer é adicionado ao banco de dados.

Criar um aplicativo do LightSwitch

Nesta etapa, você criará um aplicativo para chamar o procedimento armazenado e adicionar novos clientes ao banco de dados Northwind.

Para criar o aplicativo

  1. Na barra de menus, escolha Arquivo, Novo, Projeto.

  2. Na caixa de diálogo Novo Projeto, expanda o nó Visual Basic ou Visual C# e escolha o modelo Aplicativo HTML do LightSwitch.

  3. Na caixa de texto Nome, insira NorthwindSP e, em seguida, selecione o botão OK.

Para adicionar uma fonte de dados

  1. No Gerenciador de Soluções, abra o menu de atalho para o nó Fontes de Dados e escolha Adicionar Fonte de Dados.

  2. Em Anexar Assistente de Fonte de Dados, escolha Banco de Dados e o selecione o botão Próximo.

  3. Na caixa de diálogo Propriedades da Conexão, insira os detalhes de conexão para seu banco de dados Northwind e selecione o botão OK.

  4. Na página Escolher objetos do banco de dados, expanda o nó Tabelas, marque a caixa de seleção Clientes e selecione o botão Concluir.

Para adicionar uma tabela local

  1. No Gerenciador de Soluções, abra o menu de atalho para o nó Fontes de Dados e escolha Adicionar Tabela.

  2. Na janela Propriedades, escolha a propriedade Nome e insira NewCustomer.

  3. No designer de entidade, adicione os seguintes campos:

    Nome

    Tipo

    Obrigatório

    CustomerID

    Cadeia de caracteres

    Sim

    CompanyName

    Cadeia de caracteres

    Sim

    ContactName

    Cadeia de caracteres

    Sim

    ContactTitle

    Cadeia de caracteres

    Sim

    Endereço

    Cadeia de caracteres

    Sim

    Cidade

    Cadeia de caracteres

    Sim

    Região

    Cadeia de caracteres

    Sim

    CEP

    Cadeia de caracteres

    Sim

    País

    Cadeia de caracteres

    Sim

    Telefone

    Número de telefone

    Sim

    Fax

    Número de telefone

    Sim

    Observe que todos os campos são necessários. Isso ocorre porque todos os parâmetros para o procedimento armazenado requerem valores. Observe também que o tipo de dados para os campos Telefone e Fax são Phone Number. Mesmo que eles sejam armazenados no banco de dados como nvarchar, você pode tirar proveito dos tipos de negócios personalizados do LightSwitch na camada do cliente.

Para adicionar uma tela

  1. No Entity Designer, na barra Perspectiva, escolha HTMLClient.

  2. Na Barra de Ferramentas, clique no botão Tela.

  3. Na caixa de diálogo Adicionar Nova Tela, escolha o modelo Conjunto de Telas Comuns, na caixa de texto Nome do Conjunto de Telas digite Clientes e na lista Data de Tela, escolha NewCustomer, em seguida, clique no botão OK.

Para chamar o procedimento armazenado

  1. No Gerenciador de Soluções, abra o menu de atalho para o nó NorthwindSP.Server e escolha Adicionar, Referência.

  2. Na caixa de diálogo Adicionar Referência, marque a caixa de seleção System.Configuration e, em seguida, selecione o botão OK.

  3. No Gerenciador de Soluções, abra o menu de atalho para o nó NewCustomer.lsml e escolha Abrir.

  4. No Entity Designer, na barra Perspectiva, escolha Servidor.

  5. Na Barra de Ferramentas, expanda a lista Escrever Código e escolha NewCustomers_Inserting.

  6. No Editor de Códigos, substitua o código existente pelo seguinte:

    Imports System.Configuration
    Imports System.Data
    Imports System.Data.SqlClient
    Namespace LightSwitchApplication
    
        Public Class ApplicationDataService
    
            Private Sub NewCustomers_Inserting(entity As NewCustomer)
                Using connection = New SqlConnection
                    Dim connectionStringName = Me.DataWorkspace.NorthwindData.Details.Name
                    connection.ConnectionString = ConfigurationManager.ConnectionStrings(connectionStringName).ConnectionString
    
                    Dim procedure = "dbo.InsertCustomer"
                    Using command = New SqlCommand(procedure, connection)
                        command.CommandType = CommandType.StoredProcedure
    
                        command.Parameters.Add(
                            New SqlParameter("@CustomerID", entity.CustomerID))
                        command.Parameters.Add(
                            New SqlParameter("@CompanyName", entity.CompanyName))
                        command.Parameters.Add(
                            New SqlParameter("@ContactName", entity.ContactName))
                        command.Parameters.Add(
                            New SqlParameter("@ContactTitle", entity.ContactTitle))
                        command.Parameters.Add(
                            New SqlParameter("@Address", entity.Address))
                        command.Parameters.Add(
                            New SqlParameter("@City", entity.City))
                        command.Parameters.Add(
                            New SqlParameter("@Region", entity.Region))
                        command.Parameters.Add(
                            New SqlParameter("@PostalCode", entity.PostalCode))
                        command.Parameters.Add(
                            New SqlParameter("@Country", entity.Country))
                        command.Parameters.Add(
                            New SqlParameter("@Phone", entity.Phone))
                        command.Parameters.Add(
                            New SqlParameter("@Fax", entity.Fax))
    
                        connection.Open()
                        command.ExecuteNonQuery()
                    End Using
    
    
                End Using
            End Sub
        End Class
    
    End Namespace
    
    using Microsoft.VisualBasic;
    using System;
    using System.Collections;
    using System.Collections.Generic;
    using System.Data;
    using System.Diagnostics;
    using System.Configuration;
    using System.Data.SqlClient;
    namespace LightSwitchApplication
    {
    
    public class ApplicationDataService
    {
    
    private void NewCustomers_Inserting(NewCustomer entity)
    {
    using (connection == new SqlConnection()) {
    dynamic connectionStringName = this.DataWorkspace.NorthwindData.Details.Name;
    connection.ConnectionString = ConfigurationManager.ConnectionStrings(connectionStringName).ConnectionString;
    
    dynamic procedure = "dbo.InsertCustomer";
    using (command == new SqlCommand(procedure, connection)) {
    command.CommandType = CommandType.StoredProcedure;
    
    command.Parameters.Add(new SqlParameter("@CustomerID", entity.CustomerID));
    command.Parameters.Add(new SqlParameter("@CompanyName", entity.CompanyName));
    command.Parameters.Add(new SqlParameter("@ContactName", entity.ContactName));
    command.Parameters.Add(new SqlParameter("@ContactTitle", entity.ContactTitle));
    command.Parameters.Add(new SqlParameter("@Address", entity.Address));
    command.Parameters.Add(new SqlParameter("@City", entity.City));
    command.Parameters.Add(new SqlParameter("@Region", entity.Region));
    command.Parameters.Add(new SqlParameter("@PostalCode", entity.PostalCode));
    command.Parameters.Add(new SqlParameter("@Country", entity.Country));
    command.Parameters.Add(new SqlParameter("@Phone", entity.Phone));
    command.Parameters.Add(new SqlParameter("@Fax", entity.Fax));
    
    connection.Open();
    command.ExecuteNonQuery();
    }
    
    
    }
    }
    }
    
    }
    

    Quando um novo registro é inserido na tabela NewCustomers, esse código é executado, abrindo uma conexão com o banco de dados Northwind e executando os procedimentos armazenados de InsertCustomer, fornecendo os valores na entidade NewCustomer como parâmetros para o procedimento armazenado.

Para testar o aplicativo

  1. No Editor de Código, defina um ponto de interrupção no método NewCustomers_Inserting.

  2. Execute o aplicativo e na tela CustomersSet, selecione o botão Adicionar.

  3. Na tela Clientes, preencha todos os campos e selecione o botão Salvar.

    Observe que o ponto de interrupção é atingido, demonstrando que o código está funcionando e pressione F5 para continuar. Se você abrir a tabela Clientes no banco de dados Northwind, você verá o novo registro de cliente.

Próximas etapas

Você pode criar as telas do LightSwitch e a lógica de negócio como de costume, além de criar com rapidez e facilidade um aplicativo funcional usando procedimentos armazenados.

Consulte também

Tarefas

Como executar um procedimento armazenado no LightSwitch

Outros recursos

Dados: as informações por trás do aplicativo