Compartilhar via


Passo a passo: usar somente procedimentos armazenados (Visual Basic)

Esta explicação passo a passo fornece um cenário básico de LINQ to SQL de ponta a ponta para acessar os dados usando apenas procedimentos armazenados. Essa abordagem é frequentemente usada por administradores de banco de dados para limitar como o repositório de dados é acessado.

Observação

Também é possível usar os procedimentos armazenados em aplicativos do LINQ to SQL para substituir o comportamento padrão, especialmente para os processosCreate, Update e Delete. Para obter mais informações, confira Personalizar operações de inserção, atualização e exclusão.

Neste passo a passo, você usará dois métodos que foram mapeados para os procedimentos armazenados no banco de dados de exemplo Northwind: CustOrdersDetail e CustOrderHist. O mapeamento ocorre quando você executa a ferramenta de linha de comando SqlMetal para gerar um arquivo Visual Basic. Para obter mais informações, consulte a seção Pré-requisitos posteriormente neste passo a passo.

Esta explicação passo a passo não depende do Object Relational Designer. Os desenvolvedores que usam o Visual Studio também podem utilizar o O/R Designer para implementar a funcionalidade de procedimento armazenado. Confira Ferramentas do LINQ to SQL no Visual Studio.

Observação

Seu computador pode mostrar diferentes nomes ou locais para alguns dos elementos de interface do usuário do Visual Studio nas instruções a seguir. A edição do Visual Studio que você possui e as configurações que você usa determinam esses elementos. Para obter mais informações, consulte Personalizando o IDE.

Este passo a passo foi escrito usando as Configurações de Desenvolvimento do Visual Basic.

Pré-requisitos

Este passo a passo requer o seguinte:

  • Essa explicação passo a passo usa uma pasta c:\linqtest3 dedicada (“") para armazenar arquivos. Crie essa pasta antes de iniciar o passo a passo.

  • O banco de dados de exemplo Northwind.

    Se você não tiver esse banco de dados no seu computador de desenvolvimento, poderá baixá-lo no site de download da Microsoft. Para obter as instruções, confira Baixar bancos de dados de exemplo. Depois que você baixou o base de dados, copie o arquivo de northwnd.mdf para a pasta de c:\linqtest3.

  • Um arquivo de código do Visual Basic gerado do banco de dados Northwind.

    Este passo a passo foi escrito usando a ferramenta SqlMetal com a seguinte linha de comando:

    sqlmetal /code:"c:\linqtest3\northwind.vb" /language:vb "c:\linqtest3\northwnd.mdf" /sprocs /functions /pluralize

    Para obter mais informações, consulte SqlMetal.exe (ferramenta de geração de código).

Visão geral

Este passo a passo consiste em seis tarefas principais:

  • Configurando a solução LINQ to SQL no Visual Studio.

  • Adicionar o assembly System.Data.Linq ao projeto.

  • Adicionar o arquivo do código de banco de dados ao projeto.

  • Criando uma conexão a base de dados.

  • Configurar a interface do usuário.

  • Executar e testar o aplicativo.

Criando uma solução LINQ to SQL

Nesta primeira tarefa, você criará uma solução do Visual Studio com as referências necessárias para compilar e executar um projeto do LINQ to SQL.

Para criar uma solução LINQ to SQL

  1. No menu Arquivo do Visual Studio, clique em Novo Projeto.

  2. No painel Tipos de projeto na caixa de diálogo Novo Projeto, expanda Visual Basic e clique em Windows.

  3. No painel Modelos, clique em Aplicativo do Windows Forms.

  4. Na caixa Nome, digite SprocOnlyApp.

  5. Clique em OK.

    O Designer de Formulários do Windows é aberto.

Adicionando a referência do assembly do LINQ to SQL

O assembly do LINQ to SQL não está incluído no modelo padrão do Aplicativo Windows Forms. Você mesmo precisará adicionar o assembly, conforme explicado nas etapas a seguir:

Para adicionar o System.Data.Linq.dll

  1. Em Gerenciador de Soluções, clique Mostrar Todos os Arquivos.

  2. No Gerenciador de Soluções, clique com o botão direito do mouse em Referências e clique em Adicionar Referência.

  3. Na caixa de diálogo Adicionar Referência, clique em .NET, clique no assembly System.Data.Linq e, em seguida, clique em OK.

    O assembly é adicionado ao projeto.

Adicionando o arquivo do código Northwind ao projeto

Esta etapa presume que você usou a ferramenta SqlMetal para gerar um arquivo de código do banco de dados de exemplo Northwind. Para obter mais informações, consulte a seção de pré-requisitos anteriormente neste passo a passo.

Para adicionar o arquivo do código Northwind ao projeto

  1. No menu Projeto , clique em Adicionar Item Existente.

  2. Na caixa de diálogo Adicionar Item Existente, vá para c:\linqtest3\northwind.vb, clique em Adicionar.

    O arquivo northwind.vb é adicionado ao projeto.

Criando uma conexão de banco de dados

Nesta etapa, você define a conexão com o banco de dados de exemplo Northwind. Essa explicação passo a passo usa “c:\linqtest3\northwnd.mdf” como o caminho.

Par criar a conexão de banco de dados

  1. Em Gerenciador de Soluções, clique com o botão direito do mouse em Form1.vb e clique em Exibir Código.

    Class Form1 aparece no editor de códigos.

  2. Digite o seguinte código no bloco de código de Form1 :

    Dim db As New Northwnd("c:\linqtest3\northwnd.mdf")
    

Configurando a interface do usuário

Nesta tarefa você cria uma interface de modo que os usuários podem executar procedimentos armazenados para acessar dados na base de dados. No aplicativo que você está desenvolvendo com este passo-a-passo, os usuários podem acessar dados na base de dados usando somente os procedimentos armazenados inseridos no aplicativo.

Para configurar a interface do usuário

  1. Retorno para o Designer de Formulários do Windows (Form1.vb design []).

  2. No menu Exibir , clique em Caixa de Ferramentas.

    A caixa de ferramentas é aberta.

    Observação

    Clique no pino AutoHide para manter a caixa de ferramentas aberta enquanto você executa as etapas restantes nesta seção.

  3. Arraste dois botões, duas caixas de texto e dois rótulos da caixa de ferramentas para Form1.

    Organize os controles conforme mostrado na ilustração de acompanhamento. Expanda Form1 de modo que os controles se encaixem facilmente.

  4. Clique com o botão direito do mouse em Label1 e em Propriedades.

  5. Altere a propriedade Texto de Label1 para Inserir OrderID:.

  6. Da mesma forma que para Label2, altere a propriedade do Texto de Label2 para Inserir CustomerID:.

  7. Da mesma forma, altere a propriedade do Texto de Button1 para Detalhes do Pedido.

  8. Altere a propriedade do Texto para Button2 para Histórico de Pedidos.

    Amplie os controles de botão de modo que todo o texto fique visível.

Para manipular cliques de botão

  1. Clique duas vezes em Detalhes do Pedido em Form1 para criar o manipulador de eventos de Button1 e para abrir o editor de códigos.

  2. Digite o código a seguir no manipulador Button1:

    ' Declare a variable to hold the contents of
    ' TextBox1 as an argument for the stored
    ' procedure.
    Dim parm As String = TextBox1.Text
    
    ' Declare a variable to hold the results returned
    ' by the stored procedure.
    Dim custQuery = db.CustOrdersDetail(parm)
    
    ' Clear the message box of previous results.
    Dim msg As String = ""
    Dim response As MsgBoxResult
    
    ' Execute the stored procedure and store the results.
    For Each custOrdersDetail As CustOrdersDetailResult In custQuery
        msg &= custOrdersDetail.ProductName & vbCrLf
    Next
    
    ' Display the results.
    If msg = "" Then
        msg = "No results."
    End If
    response = MsgBox(msg)
    
    ' Clear the variables before continuing.
    parm = ""
    TextBox1.Text = ""
    
  3. Agora clique duas vezes em Button2 no Form1 para criar o manipulador de eventos Button2 e para abrir o editor de códigos.

  4. Digite o código a seguir no manipulador Button2:

    ' Comments in the code for Button2 are the same
    ' as for Button1.
    Dim parm As String = TextBox2.Text
    
    Dim custQuery2 = db.CustOrderHist(parm)
    Dim msg As String = ""
    Dim response As MsgBoxResult
    
    For Each custOrdHist As CustOrderHistResult In custQuery2
        msg &= custOrdHist.ProductName & vbCrLf
    Next
    
    If msg = "" Then
        msg = "No results."
    End If
    
    response = MsgBox(msg)
    parm = ""
    TextBox2.Text = ""
    

Testando o aplicativo

Agora é hora de testar o aplicativo. Observe que o contato com o repositório de dados limita-se a qualquer ação que os dois procedimentos armazenados podem executar. Essas ações retornarão os produtos para qualquer orderID inserida ou retornarão um histórico do produtos solicitados para qualquer CustomerID inserida.

Para testar o aplicativo

  1. Pressione F5 para iniciar a depuração.

    Form1 aparecerá.

  2. Na caixa de Inserir OrderID, digite 10249 e clique em Detalhes do Pedido.

    Uma caixa de mensagem lista os produtos incluídos no pedido 10249.

    Clique em OK para fechar a caixa de mensagens.

  3. Na caixa Inserir CustomerID, digite ALFKI e, em seguida, clique em Histórico de Pedidos.

    Uma caixa de mensagem lista o histórico de pedidos para o cliente ALFKI.

    Clique em OK para fechar a caixa de mensagens.

  4. Na caixa Inserir OrderID, digite 123 e, em seguida, clique em Detalhes do Pedido.

    Uma caixa de mensagem não exibe “nenhum” resultado.

    Clique em OK para fechar a caixa de mensagens.

  5. No menu Depurar, clique em Parar depuração.

    A sessão de depuração é fechada.

  6. Se você terminou o experimento, clique em Fechar Projeto no menu Arquivo e salve o projeto quando solicitado.

Próximas etapas

Você pode aprimorar esse projeto fazendo algumas alterações. Por exemplo, você pode listar os procedimentos armazenados disponíveis em uma caixa de listagem e fazer com que o usuário selecione os procedimentos que serão executados. Você também pode transmitir a saída dos relatórios para um arquivo de texto.

Confira também