DetailPage-MSS-KB

Base de Dados de Conhecimento

ID do artigo: 320916 - Última revisão: sexta-feira, 5 de dezembro de 2003 - Revisão: 3.3

 

Nesta página

Sumário

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

O exemplo de código neste artigo primeiro verifica se o procedimento armazenado que você irá criar existe no banco de dados pubs , que é incluído com uma instalação padrão do Microsoft SQL Server. Se o procedimento armazenado não existir, o código cria um procedimento armazenado que aceita um parâmetro para procurar a tabela autores com base no nome do último e retorna o linhas correspondentes e o 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 uma interface de usuário simples. O formulário da Web contém os seguintes itens:
  • Uma caixa de texto no qual o usuário digita o critério de pesquisa.
  • 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 é clicado.

Requisitos

A lista a seguir descreve o hardware recomendado, software, infra-estrutura de rede e service packs são necessários:
  • Microsoft SQL Server versão 7.0 ou posterior
  • Microsoft Visual Studio .NET
  • Microsoft Visual translation from VPE for Csharp .NET
  • Permissões para criar o procedimento armazenado no banco de dados
Este artigo pressupõe que você esteja familiarizado com os seguintes tópicos:
  • ASP.NET
  • Procedimentos armazenados do SQL Server

Criar um projeto do ASP.NET e adicionar controles

Nesta seção, você pode criar um projeto do ASP.NET e criar a interface do usuário básica. Observe que essas etapas usam código Microsoft Visual translation from VPE for Csharp .NET. Para criar o projeto, execute essas etapas:
  1. Clique em Iniciar , aponte para programas , aponte para Microsoft Visual Studio .NET e, em seguida, clique em Microsoft Visual Studio .NET .
  2. Na página Visual Studio .NET iniciar, clique em New Project .
  3. Na caixa de diálogo New Project , clique em projetos do Visual translation from VPE for Csharp em Tipos de projeto e, 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 conforme eles são listados na tabela:
    Recolher esta tabelaExpandir esta tabela
    ControlePropriedade IDPropriedade de texto
    rótulo lblLastNameDigite o sobrenome do autor:
    TextBox txtLastName%
    botão btnGetAuthorsObter autores
    rótulo lblRowCount(Contagem de linha)

  6. Arraste um controle DataGrid do servidor da caixa de ferramentas para o formulário da Web e defina a propriedade Name para GrdAuthors .
  7. Clique com o botão direito do mouse a 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 procedimento GetAuthorsByLastName armazenado:
Use Pubs
Go
Create Procedure GetAuthorsByLastName (@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
				
este código inclui dois parâmetros: @ au_lname e @ RowCount. O parâmetro @ au_lname é um parâmetro de entrada que obtém a seqüência de pesquisa para realizar uma pesquisa "como" 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 SQL Server, você deve importar o namespace System.Data.SqlClient , que fornece novos objetos, como 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 DataSet , que é uma representação residente na memória dos dados que fornece um modelo de programação consistente, relacional independentemente da fonte de dados. O código nesta seção usa todos esses objetos.
  1. Clique duas vezes o formulário da Web.
  2. Adicione o código a seguir (as diretivas usando ) à seção Declaração de seu formulário da Web, que aparece na parte superior da janela código:
    using System.Data;
    using System.Data.SqlClient;
    					
  3. Para certificar-se o procedimento armazenado existe e criar um novo procedimento armazenado, use um objeto SqlCommand com um objeto do SqlDataReader . Você pode usar o SqlCommand para executar os comandos SQL com o banco de dados. Em seguida, chame o método ExecuteReader de SqlCommand para retornar SqlDataReader , que contém linhas correspondentes para a sua consulta.

    Adicione o seguinte código no evento Page_Load de formulário da Web:
    	private void Page_Load(object sender, System.EventArgs e)
    	{
    		// 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 (!IsPostBack)
    		{
    			//Create a connection to the SQL Server; modify the connection string for your environment
    			//SqlConnection MyConnection = new SqlConnection("server=(local);database=pubs;Trusted_Connection=yes");
    			SqlConnection MyConnection = new SqlConnection("server=(local);database=pubs;UID=myUser;PWD=myPassword;");
    
    			// Create a Command object, and then set the connection.
    			// The following SQL statements check whether a GetAuthorsByLastName  
    			// stored procedure already exists.
    			SqlCommand MyCommand = new SqlCommand("select * from sysobjects where id = object_id(N'GetAuthorsByLastName')" +
    			"  and OBJECTPROPERTY(id, N'IsProcedure') = 1", MyConnection);
    
    			// Set the command type that you will run.
    			MyCommand.CommandType = CommandType.Text;
    
    			// Open the connection.
    			MyCommand.Connection.Open();
    
    			// Run the SQL statement, and then get the returned rows to the DataReader.
    			SqlDataReader MyDataReader = MyCommand.ExecuteReader();
    
    			// If any rows are returned, 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(!MyDataReader.Read())
    			{
    				MyCommand.CommandText = "create procedure GetAuthorsByLastName" + 
    					" (@au_lname varchar(40), select * from authors where" +
    					" au_lname like @au_lname; select @RowCount=@@ROWCOUNT";
    				MyDataReader.Close();
    				MyCommand.ExecuteNonQuery();
    			}
    			else
    			{
    				MyDataReader.Close();
    			}
    
    			MyCommand.Dispose();  //Dispose of the Command object.
    			MyConnection.Close(); //Close the connection.
    		}
    
    		// Add the event handler to the Button_Click event.
    		this.btnGetAuthors.Click += new System.EventHandler(this.btnGetAuthors_Click);
    	}
    					
  4. Chame 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 parâmetros do objeto SqlDataAdapter .

    Adicione o seguinte código após o evento Page_Load :
    	private void btnGetAuthors_Click(object sender, System.EventArgs e)
    	{
    		//Create a connection to the SQL Server; modify the connection string for your environment.
    		//SqlConnection MyConnection = new SqlConnection("server=(local);database=pubs;Trusted_Connection=yes");
    		SqlConnection MyConnection = new SqlConnection("server=(local);database=pubs;UID=myUser;PWD=myPassword;");
    
    		//Create a DataAdapter, and then provide the name of the stored procedure.
    		SqlDataAdapter 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 = (txtLastName.Text).Trim();
    
    		//Create and add an output parameter to the Parameters collection. 
    		MyDataAdapter.SelectCommand.Parameters.Add(new SqlParameter("@RowCount", SqlDbType.Int, 4));
    
    		//Set the direction for the parameter. This parameter returns the Rows that are returned.
    		MyDataAdapter.SelectCommand.Parameters["@RowCount"].Direction = ParameterDirection.Output;
    
    		//Create a new DataSet to hold the records.
    		DataSet DS = new DataSet();
    		
    		//Fill the DataSet with the rows that are returned.
    		MyDataAdapter.Fill(DS, "AuthorsByLastName");
    
    		//Get the number of rows returned, and 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;
    
    		//NOTE: If you do not call this method, the DataGrid is not displayed!
    		GrdAuthors.DataBind();
    
    		MyDataAdapter.Dispose(); //Dispose the DataAdapter.
    		MyConnection.Close(); //Close the connection.
    	}
    					
  5. No Solution Explorer, clique a página .aspx com o botão direito do mouse e, em seguida, clique em Definir como página inicial .
  6. Salvar o projeto e, em seguida, clique em Iniciar no Visual Studio. NET. Observe que o projeto é compilado e que a página padrão é executada.
  7. Digite o sobrenome do autor na caixa de texto e, em seguida, clique em Obter autor . Observe que o procedimento armazenado é chamado e as linhas retornadas preencher o DataGrid .

    Você pode fornecer seqüências de pesquisa de tipo do SQL Server como G % , que retorna todos os autores por últimos nomes que começam com a letra "g".

Solução de problemas

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

A informação contida neste artigo aplica-se a:
  • Microsoft ADO.NET (included with the .NET Framework)
  • Microsoft ADO.NET 1.1
  • Microsoft ASP.NET 1.1
  • Microsoft Visual C# .NET 2002 Standard Edition
  • Microsoft Visual C# .NET 2003 Standard Edition
Palavras-chave: 
kbmt kbhowtomaster kbsqlclient kbstoredproc kbsystemdata KB320916 KbMtpt
Tradução automáticaTraduçã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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 320916  (http://support.microsoft.com/kb/320916/en-us/ )
Compartilhar
Opções de suporte adicionais
Fóruns de Suporte do Microsoft Community
Contate-nos diretamente
Localize um parceiro certificado da Microsoft
Microsoft Store