COMO: SQL Server da chamada de procedimentos armazenados no ASP.NET utilizando o Visual C# .NET

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

Nesta página

Sumário

Este artigo demonstra como utilizar o ASP.NET e ADO.NET com o Visual C# .NET para criar e contactar um Microsoft SQL Server armazenadas procedimento com um parâmetro de entrada e um parâmetro de saída.

O código de exemplo neste artigo verifica primeiro se o procedimento armazenado vai criar existe na base de dados pubs , que é fornecido 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 assume um parâmetro para procurar a tabela de autores , com base no nome do último e devolve o número de linhas retornadas num parâmetro de saída e linhas correspondentes.

Este artigo também demonstra como criar um formulário da Web que fornece uma interface de utilizador simples. O formulário da Web contém os seguintes itens:
  • Uma caixa de texto no qual o utilizador escreve a condição de procura.
  • Um controlo DataGrid que apresente os resultados da procura.
  • Controlo de etiqueta que apresenta o número de registos devolvidos.
  • Um controlo de botão que chame o procedimento armazenado quando o botão é clicado.

Requisitos

A lista seguinte 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 C# .NET
  • Permissões para criar o procedimento armazenado na base de dados
Este artigo pressupõe que está familiarizado com os seguintes tópicos:
  • ASP.NET
  • Procedimentos armazenados do SQL Server

Criar um projecto do ASP.NET e adicionar controlos

Nesta secção, pode criar um projecto ASP.NET e cria a interface de utilizador básica. Tenha em atenção que estes passos utilizam o Microsoft Visual C# .NET código. Para criar o projecto, siga estes passos:
  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 Iniciar do Visual Studio .NET, clique em Novo projecto .
  3. Na caixa de diálogo Novo projecto , clique em Visual C# Projects em Project Types e, em seguida, clique em ASP.NET Web Application em modelos .
  4. Na caixa nome , escreva um nome para a aplicação Web e, em seguida, clique em OK .
  5. Adicione os seguintes controlos de servidor para o formulário da Web e definir as propriedades são listados na tabela:
    Reduzir esta tabelaExpandir esta tabela
    ControloID de propriedadePropriedades de texto
    etiqueta lblLastNameEscreva o nome apelido do autor:
    caixa de texto txtLastName%
    botão btnGetAuthorsObter autores
    etiqueta lblRowCount(Número de linha)

  6. Arraste um controlo de servidor DataGrid da caixa de ferramentas ao formulário da Web e, em seguida, defina a propriedade Nome como GrdAuthors .
  7. Clique com o botão direito do rato na grelha e, em seguida, clique em formatação automática .
  8. Clique Professional 1 para o esquema e, em seguida, clique em OK .

Criar o GetAuthorsByLastName procedimento armazenado

Utilize o seguinte código Transact-SQL para criar o procedimento armazenado GetAuthorsByLastName:
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: @ at_nome e @ RowCount. O parâmetro @ at_nome é um parâmetro de entrada que obtém a cadeia de procura para efectuar uma procura de "como" na tabela autores . O parâmetro @ RowCount é um parâmetro de saída que utiliza a variável @@ ROWCOUNT para obter as linhas afectadas.

Criar e executar o procedimento armazenado

Para aceder a bases de dados do SQL Server, terá de importar o espaço de nomes System.data.SqlClient , que fornece novos objectos, tais como SqlDataReader e os objectos SqlDataAdapter . Pode utilizar SqlDataReader ler uma sequência só de reencaminhamento de linhas a partir de uma base de dados do SQL Server. ' DataAdapter ' representa um conjunto de comandos de dados e uma ligação de base de dados que pode utilizar para preencher o objecto de DataSet e para actualizar uma base de dados do SQL Server.

ADO.NET também apresenta o objecto DataSet , que é uma representação residente em memória dos dados que fornece um modelo consistente e relacional programação independentemente da origem de dados. O código nesta secção utiliza todos estes objectos.
  1. Faça duplo clique no formulário da Web.
  2. Adicione o seguinte código (as directivas utilizando ) à secção do seu formulário da Web, que aparece na parte superior da janela Code declaração:
    using System.Data;
    using System.Data.SqlClient;
    					
  3. Para se certificar de que existe o procedimento armazenado e para criar um novo procedimento armazenado, utilize um objecto SqlCommand com um objecto SqlDataReader . Pode utilizar SqlCommand para executar quaisquer comandos SQL em relação à base de dados. Em seguida, chame o método ExecuteReader de SqlCommand para devolver SqlDataReader , que contém linhas correspondentes para a consulta.

    Adicione o seguinte código no evento Page_Load do formulário 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. Contacte o procedimento armazenado no evento Click do botão btnGetAuthors e, em seguida, utilizar o objecto SqlDataAdapter para executar o procedimento armazenado. Tem de criar parâmetros para o procedimento armazenado e anexá-la à colecção de parâmetros do objecto SqlDataAdapter .

    Adicione o seguinte código depois do 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 com o botão direito do rato na página .aspx e, em seguida, clique em Definir como página inicial .
  6. Guardar o projecto e, em seguida, clique em Iniciar no Visual Studio. NET. Repare que o projecto compilado e que a página predefinida é executada.
  7. Escreva o apelido do autor na caixa de texto e, em seguida, clique em Obter autor . Repare que chama o procedimento armazenado e as linhas devolvidas preencher DataGrid .

    Pode fornecer busca de tipo de servidor SQL como a conta % , que devolve todos os autores por apelidos que começam com a letra "G."

Resolução de problemas

  • Se não conseguir ligar à base de dados, certifique-se de que ConnectionString correctamente aponta para o servidor que está a executar o SQL Server.
  • Se pode ligar à base de dados, mas se tiver problemas quando tentar criar o procedimento armazenado, certifique-se de que tem as permissões correctas para criar procedimentos armazenados na base de dados ao qual está a ligar.

Propriedades

Artigo: 320916 - Última revisão: 5 de dezembro de 2003 - Revisão: 3.3
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 (included with the .NET Framework)
  • 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á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: 320916

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