Como chamar SQL Server armazenados procedimentos no ASP.NET usando o Visual Basic .NET

Traduções de Artigos Traduções de Artigos
Artigo: 306574 - Ver produtos para os quais este artigo se aplica.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

Este artigo demonstra como usar o ASP.NET e ADO.NET com o Visual Basic .NET para criar e chamar de um Microsoft SQL Server armazenados procedimento com um parâmetro de entrada e um parâmetro de saída.

O código exemplo deste artigo primeiro verifica se o procedimento armazenado que você irá Criar existe no banco de dados. Se o procedimento armazenado não existir, o código cria um procedimento armazenado que aceita um parâmetro para pesquisar a tabela autores com base no sobrenome e retorna as linhas correspondentes e número de linhas que são retornados em um parâmetro de saída.

Este artigo também demonstra como criar um formulário da Web que fornece a um usuário simple interface. O formulário da Web contém os seguintes itens:
  • Uma caixa de texto no qual o usuário digita a pesquisa condição.
  • Um controle DataGrid que exibe os resultados da pesquisa.
  • Um controle Label que exibe o número de registros retornados.
  • Um controle de botão que chama o procedimento armazenado quando o botão é foi clicado.

Requisitos

A lista a seguir descreve o hardware recomendado, software, infra-estrutura de rede e service packs necessários:
  • Microsoft SQL Server versão 7.0 ou posterior
  • Microsoft Visual Studio .NET
  • Microsoft Visual Basic .NET
  • Permissões para criar o procedimento armazenado na banco de dados
Este artigo presume que você esteja familiarizado com o seguinte tópicos:
  • Procedimentos do SQL Server armazenados

Criar um projeto do ASP.NET e adicionar controles

Nesta seção, você pode criar um projeto do ASP.NET e compilar o interface do usuário básica. Observe que essas etapas usam o Microsoft Visual Basic .NET código. Para criar o projeto, siga estas etapas:
  1. Clique em Iniciar, aponte para programas, aponte para Microsoft Visual Studio .NETe, em seguida, clique em Microsoft Visual Studio .NET.
  2. Na página inicial do Visual Studio .NET, clique em New Project.
  3. Na caixa de diálogo New Project , clique em Projetos do Visual Basic em Tipos de projetoe, em seguida, clique em ASP.NET Web Application em modelos.
  4. Na caixa nome , digite um nome para seu aplicativo da Web e, em seguida, clique em OK.
  5. Adicione os seguintes controles de servidor para o formulário da Web e defina as propriedades que estão listados na tabela:
    Reduzir esta tabelaExpandir esta tabela
    ControlePropriedade IDPropriedade Text
    RótulolblLastNameDigite o sobrenome do autor:
    Caixa de textotxtLastName%
    BotãobtnGetAuthorsObtenha os autores
    RótulolblRowCount(Contagem de linhas)

  6. Arraste um controle DataGrid do servidor na caixa de ferramentas para o formulário da Web e, em seguida, defina o Propriedade Name para GrdAuthors.
  7. Clique com o botão direito na grade e, em seguida, clique em AutoFormatação.
  8. Clique em Professional 1 para o esquema e, em seguida, clique em OK.

Criar o GetAuthorsByLastName procedimento armazenado

Use o seguinte código Transact-SQL para criar o GetAuthorsByLastName procedimento armazenado:
Create Procedure GetAuthorsByLastName1 (@au_lname varchar(40), @RowCount int output)  
as 

select * from authors where au_lname like @au_lname; 

/* @@ROWCOUNT returns the number of rows that are affected by the last statement. */ 
select @RowCount=@@ROWCOUNT
				
Esse código inclui dois parâmetros: @au_lname e @RowCount. O o parâmetro @au_lname é um parâmetro de entrada que obtém a string de pesquisa para Faça uma pesquisa de "like" na tabela autores . O parâmetro @RowCount é um parâmetro de saída que usa a variável @@ROWCOUNT para obter as linhas afetadas.

Criar e executar o procedimento armazenado

Para acessar bancos de dados do SQL Server, você deve importar o namespace System.Data.SqlClient , que fornece novos objetos, como o SqlDataReader e os objetos SqlDataAdapter . Você pode usar SqlDataReader para ler um fluxo somente de encaminhamento de linhas de um banco de dados do SQL Server. DataAdapter representa um conjunto de comandos de dados e uma conexão de banco de dados que Você pode usar para preencher o objeto DataSet e para atualizar um banco de dados do SQL Server.

ADO.NET também apresenta o objeto de DataSet , que é uma representação residente na memória dos dados que Fornece um modelo de programação consistente e relacional, independentemente dos dados código-fonte. O código nesta seção usa todos esses objetos.
  1. Clique duas vezes o formulário da Web.
  2. Adicione o seguinte código à seção Declaração de seu Formulário da Web, que aparece na parte superior da janela de código:
    Imports System.Data
    Imports System.Data.SqlClient
    					
  3. Para certificar-se de que o procedimento armazenado existe e criar um novo procedimento armazenado, use uma SqlCommand objeto com um objeto do SqlDataReader . Você pode usar o SqlCommand para executar todos os comandos SQL no banco de dados. Em seguida, chame o método ExecuteReader de SqlCommand para retornar SqlDataReader, que contém linhas correspondentes para a sua consulta.

    Adicionar a código a seguir no evento Page_Load do formulário da Web:
    'Only run this code the first time the page is loaded.
    'The code inside the IF statement is skipped when you resubmit the page.
    If Not IsPostBack Then
        Dim MyConnection As SqlConnection
        Dim MyCommand As SqlCommand
        Dim MyDataReader As SqlDataReader
    
        'Create a Connection object.
        MyConnection = New SqlConnection("server=(local);database=pubs;Trusted_Connection=yes")
    
        'Create a Command object, and then set the connection.
        'The following SQL statements check whether a GetAuthorsByLastName stored procedure 
        'already exists.
        MyCommand = New SqlCommand("if object_id('pubs..GetAuthorsByLastName') is not null " + "begin" + " if objectproperty(object_id('pubs..GetAuthorsByLastName'), 'IsProcedure')= 1" + " select object_id('pubs..GetAuthorsByLastName')" + " else" + " return " + "end" + " else" + " return", MyConnection)
    
        With MyCommand
            'Set the command type that you will run.
            .CommandType = CommandType.Text
    
            'Open the connection.
            .Connection.Open()
    
            'Run the SQL statement, and then get the returned rows to the DataReader.
            MyDataReader = .ExecuteReader()
    
            'If any rows are retuned, the stored procedure that you are trying 
            'to create already exists. Therefore, try to create the stored procedure
            'only if it does not exist.
            If Not MyDataReader.Read() Then
                .CommandText = "create procedure GetAuthorsByLastName (@au_lname varchar(40), " & _ 
    
                                "@RowCount int output) " & _ 
    
                                " as select * from authors where au_lname like @au_lname; select @RowCount=@@ROWCOUNT"
                MyDataReader.Close()
                .ExecuteNonQuery()
            Else
                MyDataReader.Close()
            End If
    
            .Dispose()  'Dispose of the Command object.
            MyConnection.Close() 'Close the connection.
        End With
    End If
    					
  4. Chamar o procedimento armazenado no evento Click do botão btnGetAuthors e, em seguida, use o objeto SqlDataAdapter para executar o procedimento armazenado. Você deve criar parâmetros para o procedimento armazenado e acrescentá-la à coleção de parâmetros do objeto SqlDataAdapter .

    Adicione o seguinte código após o evento Page_Load :
    Private Sub btnGetAuthors_Click(ByVal sender As System.Object, _
     ByVal e As System.EventArgs) Handles btnGetAuthors.Click
        Dim DS As DataSet
        Dim MyConnection As SqlConnection
        Dim MyDataAdapter As SqlDataAdapter
    
        'Create a connection to the SQL Server.
        MyConnection = New SqlConnection("server=(local);database=pubs;Trusted_Connection=yes")
    
        'Create a DataAdapter, and then provide the name of the stored procedure.
        MyDataAdapter = New SqlDataAdapter("GetAuthorsByLastName", MyConnection)
    
        'Set the command type as StoredProcedure.
        MyDataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure
    
        'Create and add a parameter to Parameters collection for the stored procedure.
        MyDataAdapter.SelectCommand.Parameters.Add(New SqlParameter("@au_lname", _
       SqlDbType.VarChar, 40))
    
        'Assign the search value to the parameter.
        MyDataAdapter.SelectCommand.Parameters("@au_lname").Value = Trim(txtLastName.Text)
    
        'Create and add an output parameter to Parameters collection. 
        MyDataAdapter.SelectCommand.Parameters.Add(New SqlParameter("@RowCount", _
        SqlDbType.Int, 4))
    
        'Set the direction for the parameter. This parameter returns the Rows returned.
        MyDataAdapter.SelectCommand.Parameters("@RowCount").Direction = ParameterDirection.Output
    
        DS = New DataSet() 'Create a new DataSet to hold the records.
        MyDataAdapter.Fill(DS, "AuthorsByLastName") 'Fill the DataSet with the rows returned.
    
        'Get the number of rows returned, and then assign it to the Label control.
        'lblRowCount.Text = DS.Tables(0).Rows.Count().ToString() & " Rows Found!"
        lblRowCount.Text = MyDataAdapter.SelectCommand.Parameters(1).Value & " Rows Found!"
    
        'Set the data source for the DataGrid as the DataSet that holds the rows.
        Grdauthors.DataSource = DS.Tables("AuthorsByLastName").DefaultView
    
        'Bind the DataSet to the DataGrid. 
        'NOTE: If you do not call this method, the DataGrid is not displayed!
        Grdauthors.DataBind()
    
        MyDataAdapter.Dispose() 'Dispose of the DataAdapter.
        MyConnection.Close() 'Close the connection.
    End Sub
    					
  5. No Solution Explorer, clique com o botão direito da página. aspx e, em seguida Clique em Definir como página inicial.
  6. Salve o projeto e, em seguida, clique em Iniciar no Visual Studio .NET. Observe que o projeto é compilado e que executa a página padrão.
  7. Digite o sobrenome do autor na caixa de texto e, em seguida, clique em Obtenha o autor. Aviso de que o procedimento armazenado é chamado e que o retornado linhas preencher o DataGrid.

    Você pode fornecer seqüências de pesquisa do tipo do SQL Server como% G, que retorna todos os autores pela última nomes que Iniciar com a letra "g".

Solução de problemas

  • Se você não pode se conectar ao banco de dados, certifique-se de que o ConnectionString corretamente aponta para o servidor que esteja executando o SQL Servidor.
  • Se você puder se conectar ao banco de dados, mas se você tiver Certifique-se de que você tenha problemas ao tentar criar o procedimento armazenado, as permissões corretas para criar procedimentos armazenados no banco de dados ao qual Você está se conectando.

Referências

Para obter mais informações, consulte os seguintes tópicos na Documentação do Microsoft.NET Framework Software Development Kit (SDK):
Visão geral do ADO.NET
http://msdn.microsoft.com/en-us/library/h43ks021.aspx

Conjunto de dados ADO.NET
http://msdn.microsoft.com/en-us/library/zb0sdh0b (VS.71). aspx

Usando o .NET Data Providers para acessar dados
http://msdn2.microsoft.com/en-us/library/s7ee2dwt (vs.71). aspx
Para obter mais informações, consulte o seguinte livro:
Wyke, R. Allen e Sultão Rehman e Brad Leupen. XML Programming (referência do núcleo). Microsoft Press, 2001.
Para obter mais informações, consulte o seguinte Microsoft Training & Curso de certificação:
Programação 2389 com ADO.NET
Para adicionais informações sobre como executar essa tarefa usando o Microsoft Active Server Páginas, clique no número abaixo para ler o artigo na Microsoft Base de dados de Conhecimento:
300488 Como executar SQL procedimentos armazenados sejam uma página ASP

Propriedades

Artigo: 306574 - Última revisão: 27 de dezembro de 2012 - Revisão: 8.0
A informação contida neste artigo aplica-se a:
  • Microsoft ASP.NET 1.0
  • Microsoft ASP.NET 1.1
  • Microsoft ADO.NET 1.1
  • Microsoft Visual Basic .NET 2002 Standard Edition
  • Microsoft Visual Basic .NET 2003 Standard Edition
Palavras-chave: 
kbhowtomaster kbsqlclient kbsystemdata kbmt KB306574 KbMtpt
Tradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 306574

Submeter comentários

 

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com