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

Este passo a passo fornece um cenário LINQ to SQL básico de ponta a ponta para acessar dados usando apenas procedimentos armazenados. Essa abordagem é frequentemente usada por administradores de banco de dados para limitar como o armazenamento de dados é acessado.

Nota

Você também pode usar procedimentos armazenados em aplicativos LINQ to SQL para substituir o comportamento padrão, especialmente para Create, Updatee Delete processos. Para obter mais informações, consulte Personalizando operações de inserção, atualização e exclusão.

Para fins deste passo a passo, você usará dois métodos que foram mapeados para 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 do Visual Basic. Para obter mais informações, consulte a seção Pré-requisitos mais adiante neste passo a passo.

Este passo a passo não depende do Object Relational Designer. Os desenvolvedores que usam o Visual Studio também podem usar o O/R Designer para implementar a funcionalidade de procedimento armazenado. Consulte LINQ to SQL Tools no Visual Studio.

Nota

Seu computador pode mostrar nomes ou locais diferentes para alguns dos elementos da interface do usuário do Visual Studio nas instruções a seguir. A edição do Visual Studio que você tem 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:

  • Este passo a passo usa uma pasta dedicada ("c:\linqtest3") para armazenar arquivos. Crie esta pasta antes de começar o passo a passo.

  • O banco de dados de exemplo Northwind.

    Se não tiver esta base de dados no computador de desenvolvimento, pode transferi-la a partir do site de transferências da Microsoft. Para obter instruções, consulte Download de bancos de dados de exemplo. Depois de baixar o banco de dados, copie o arquivo northwnd.mdf para a pasta c:\linqtest3.

  • Um arquivo de código do Visual Basic gerado a partir 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).

Descrição geral

Este passo a passo consiste em seis tarefas principais:

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

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

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

  • Criando uma conexão com o banco de dados.

  • Configurando a interface do usuário.

  • Executando e testando o aplicativo.

Criando uma solução LINQ to SQL

Nesta primeira tarefa, você cria uma solução do Visual Studio que contém as referências necessárias para criar e executar um projeto 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 Windows Forms Designer é aberto.

Adicionando o LINQ ao SQL Assembly Reference

O assembly LINQ to SQL não está incluído no modelo padrão do Windows Forms Application. Você mesmo terá que adicionar o assembly, conforme explicado nas seguintes etapas:

Para adicionar System.Data.Linq.dll

  1. No Gerenciador de Soluções, clique em 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 .

    A montagem é adicionada ao projeto.

Adicionando o arquivo de código Northwind ao projeto

Esta etapa pressupõe que você tenha usado 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 Pré-requisitos anteriormente neste passo a passo.

Para adicionar o arquivo de código northwind ao projeto

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

  2. Na caixa de diálogo Adicionar Item Existente, mova para c:\linqtest3\northwind.vb e 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. Este passo a passo usa "c:\linqtest3\northwnd.mdf" como o caminho.

Para criar a conexão de banco de dados

  1. No 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 Form1 bloco de código:

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

Configurando a interface do usuário

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

Para configurar a interface do usuário

  1. Retorne ao Windows Forms Designer (Form1.vb[Design]).

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

    A caixa de ferramentas é aberta.

    Nota

    Clique no pino Ocultar automaticamente para manter a caixa de ferramentas aberta enquanto 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 o Form1.

    Organize os controles como na ilustração que acompanha o artigo. Expanda o Form1 para que os controles se encaixem facilmente.

  4. Clique com o botão direito do rato em Label1 e, em seguida, clique em Propriedades.

  5. Altere a propriedade Text de Label1 para Enter OrderID:.

  6. Da mesma forma para Label2, altere a propriedade Text de Label2 para Enter CustomerID:.

  7. Da mesma forma, altere a propriedade Text de Button1 para Order Details.

  8. Altere a propriedade Text de Button2 para Order History.

    Amplie os controles do botão para que todo o texto fique visível.

Para lidar com cliques de botão

  1. Clique duas vezes em Order Details no Form1 para criar o Button1 manipulador de eventos e abrir o editor de códigos.

  2. Digite o seguinte código no Button1 manipulador:

    ' 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 Button2 eventos e abrir o editor de código.

  4. Digite o seguinte código no Button2 manipulador:

    ' 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 a sua aplicação. Observe que seu contato com o armazenamento de dados é limitado a quaisquer ações que os dois procedimentos armazenados possam tomar. Essas ações são devolver os produtos incluídos para qualquer ID de pedido que você inserir, ou retornar um histórico de produtos encomendados para qualquer ID de Cliente que você inserir.

Para testar a aplicação

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

    O Form1 é exibido.

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

    Uma caixa de mensagem lista os produtos incluídos na ordem 10249.

    Clique em OK para fechar a caixa de mensagem.

  3. Na caixa Inserir ID do Cliente, digite ALFKIe clique em Histórico de Pedidos.

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

    Clique em OK para fechar a caixa de mensagem.

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

    Uma caixa de mensagem exibe "Sem resultados".

    Clique em OK para fechar a caixa de mensagem.

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

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

  6. Se tiver terminado de experimentar, você pode clicar em Fechar projeto no menu Arquivo e salvar seu projeto quando solicitado.

Passos Seguintes

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

Consulte também