Cómo: Llamada SQL Server utilizar los procedimientos almacenados en ASP.NET J# .NET

Seleccione idioma Seleccione idioma
Id. de artículo: 320622 - Ver los productos a los que se aplica este artículo
Este artículo se ha archivado. Se ofrece "tal cual" y no se volverá a actualizar.
Expandir todo | Contraer todo

En esta página

Resumen

Este artículo muestra cómo utilizar ASP.NET y ADO.NET con Visual J# .NET para crear y llamar a un servidor de Microsoft SQL Server procedimiento almacenado con un parámetro de entrada y un parámetro de salida.

El código de ejemplo en este artículo comprueba primero si el procedimiento almacenado que cree existe en la base de datos. Si el procedimiento almacenado no existe, el código crea un procedimiento almacenado que toma un parámetro para buscar la tabla de autores basándose en el apellido y devuelve las filas coincidentes y el número de filas que se devuelven en un parámetro de salida.

En este artículo también se muestra cómo crear un Web Form que proporciona una interfaz de usuario sencilla. El Web Form contiene los elementos siguientes:
  • Un cuadro de texto en el que el usuario escribe la condición de búsqueda.
  • Un control DataGrid que muestra los resultados de búsqueda.
  • Un control Label que muestra el número de registros devueltos.
  • Un control Button que llama al procedimiento almacenado cuando se hace clic en el botón.

Requisitos

En la lista siguiente se describe el hardware, el software, la infraestructura de red y los Service Packs recomendados que necesitará:
  • Microsoft SQL Server versión 7.0 o posterior
  • Microsoft Visual Studio .NET
  • Microsoft Visual J# .NET
  • Permisos para crear el procedimiento almacenado en la base de datos
En este artículo se supone que está familiarizado con los temas siguientes:
  • Procedimientos almacenados de SQL Server

Crear un proyecto ASP.NET y agregar controles

En esta sección, va a crear un proyecto ASP.NET y a generar la interfaz de usuario básica. Tenga en cuenta que estos pasos utilizar código de Microsoft Visual J#. NET. Para crear el proyecto, siga estos pasos:
  1. Haga clic en Inicio , seleccione programas , elija Visual Studio.NET y, a continuación, haga clic en Microsoft Visual Studio .NET .
  2. En la página de inicio de Visual Studio. NET, haga clic en Nuevo proyecto .
  3. En el cuadro de diálogo Nuevo proyecto , haga clic en Proyectos de Visual J# en Tipos de proyecto y, a continuación, haga clic en Aplicación Web ASP.NET bajo plantillas .
  4. En el cuadro ubicación , escriba la dirección URL para el servidor Web y un nombre para el sitio Web (por ejemplo, tipo http://localhost/jsGetAuthors ), de la aplicación y, a continuación, haga clic en Aceptar .
  5. Agregue los siguientes controles de servidor al Web Form y establezca las propiedades indicadas en la tabla:
    Contraer esta tablaAmpliar esta tabla
    ControlPropiedad IDText (propiedad)
    etiqueta lblLastNameEscriba el apellido del autor:
    TextBox txtLastName%
    botón btnGetAuthorsObtener autores
    etiqueta lblRowCount(Número de fila)

  6. Arrastre un control de servidor DataGrid desde el cuadro de herramientas al formulario Web Forms y, a continuación, establezca la propiedad ID a GrdAuthors .
  7. Haga clic con el botón secundario en la cuadrícula y, a continuación, haga clic en Autoformato .
  8. Haga clic en Professional 1 para la combinación y, a continuación, haga clic en Aceptar .

Crear el procedimiento almacenado GetAuthorsByLastName

Utilice el siguiente código Transact-SQL para crear el procedimiento almacenado GetAuthorsByLastName. Observe que este procedimiento se crea en el código de Visual J# .NET siguiente incluso si manualmente no se crea en este momento):
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 incluye dos parámetros: @ au_lname y @ RowCount. El parámetro @ au_lname es un parámetro de entrada que obtiene la cadena de búsqueda para realizar una búsqueda "like" en la tabla authors . RowCount es un parámetro de salida que utiliza la variable @@ROWCOUNT para obtener las filas afectadas.

Crear y ejecutar el procedimiento almacenado

Para tener acceso a las bases de datos de SQL Server, debe importar el espacio de nombres System.Data.SqlClient , que proporciona nuevos objetos como SqlDataReader y los objetos de SqlDataAdapter . Puede utilizar SqlDataReader para leer una secuencia de sólo avance de las filas de una base de datos de SQL Server. DataAdapter representa un conjunto de comandos de datos y una conexión de base de datos que puede utilizar para llenar el objeto DataSet y actualizar una base de datos de SQL Server.

ADO.NET incluye también el objeto DataSet , que es una representación residente en memoria de datos que proporciona un modelo de programación relacional coherente independientemente del origen de datos. En el código de esta sección se emplean todos estos objetos.
  1. Haga doble clic en un espacio vacío en el formulario Web para ver el código de Visual J# .NET que está asociado con el formulario Web.
  2. Agregue el código siguiente justo después de la instrucción package, que aparece en la parte superior de la ventana código:
    import System.Data.SqlClient.*;
    					
  3. Para asegurarse de que el procedimiento almacenado existe y crear un nuevo procedimiento almacenado, utilizar un objeto SqlCommand con un objeto SqlDataReader . Puede utilizar SqlCommand para ejecutar cualquier comando SQL contra la base de datos. A continuación, llame al método ExecuteReader de SqlCommand para devolver SqlDataReader , que contiene las filas coincidentes de la consulta.

    Agregue el código siguiente en el evento Page_Load del Web Form:
    // Put user code to initialize the page here.
    // The code inside the If statement is skipped when you resubmit the page.
    if ( !(get_IsPostBack()))
    {
    	//Create a Connection object.
    	SqlConnection 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.
    SqlCommand MyCommand = new SqlCommand("if object_id('northwind..GetAuthorsByLastName') is not null" + " begin" + 
    			" if objectproperty(object_id('northwind..GetAuthorsByLastName'), 'IsProcedure')= 1" + 
    				" select object_id('northwind..GetAuthorsByLastName')" + 
    			" else" + " return" + " end" + 
    			" else" + " return", MyConnection);
    	//Set the command type that you will run.
    	MyCommand.set_CommandType(CommandType.Text);
    	//Open the connection.
    	MyCommand.get_Connection().Open();
    	//Run the SQL statement, and then get the returned rows to a DataReader.
    	SqlDataReader MyDataReader = MyCommand.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 (!MyDataReader.Read()) 
    	{
    		MyCommand.set_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();
    		MyCommand.ExecuteNonQuery();
    	}
    	else
    		MyDataReader.Close();
    	
    	//Dispose of the Command object.
    	MyCommand.Dispose(); 
    	//Close the connection.
    	MyConnection.Close();
    }
    					
  4. Cambie la cadena de conexión en el código para conectar con el servidor está ejecutando SQL Server.
  5. Llame al procedimiento almacenado en el evento Click del botón btnGetAuthors y, a continuación, utilice el objeto SqlDataAdapter para ejecutar el procedimiento almacenado. Debe crear parámetros para el procedimiento almacenado y anexarlo a la colección Parameters del objeto SqlDataAdapter .

    Haga doble clic en el botón btnGetAuthors en la vista Diseño y, a continuación, agregue el código siguiente al evento Click :
    private void btnGetAuthors_Click (System.Object sender, System.EventArgs e)
    {	
    	//Create a connection to the SQL Server.
    	SqlConnection MyConnection = new SqlConnection("server=(local);database=pubs;Trusted_Connection=yes");
    	//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.get_SelectCommand().set_CommandType(CommandType.StoredProcedure);
    	//Get the parameter collection from the select command of the DataAdapter object.
    	SqlParameterCollection ParamColl = MyDataAdapter.get_SelectCommand().get_Parameters();
    	//Add a parameter to Parameters collection, and then specify its name, type and size.
    	ParamColl.Add("@au_lname",SqlDbType.VarChar,40); 
    	//Assign the search value to the parameter.
    	ParamColl.get_Item("@au_lname").set_Value((System.String)txtLastName.get_Text()); 
    	//Add an output parameter to Parameters collection, and then specify its name, type and size.
    	ParamColl.Add("@RowCount",SqlDbType.Int, 4);
    	//Set the direction for the parameter. This parameter returns the Rows returned.
    	ParamColl.get_Item("@RowCount").set_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 that are returned, and then assign it to the Label control.
    	lblRowCount.set_Text(ParamColl.get_Item(1).get_Value() + " Rows Found!");
    
    	//Set the data source for the DataGrid as the DataSet that holds the rows.
    	GrdAuthors.set_DataSource(DS);
    	//Set the data member for the DataGrid as the AuthorsByLastName DataTable.
    	GrdAuthors.set_DataMember("AuthorsByLastName");
    
    	//Bind the DataSet to DataGrid. NOTE: If you do not call this method, the DataGrid is not displayed!
    	GrdAuthors.DataBind();
    
    	//Dispose of the DataAdapter.
    	MyDataAdapter.Dispose();
    	//Close the connection.
    	MyConnection.Close();
    } 
    					
  6. Cambie la cadena de conexión en el código para conectar con el servidor está ejecutando SQL Server.
  7. En el Explorador de soluciones, haga clic con el botón secundario del mouse en la página .aspx y, a continuación, haga clic en establecer como página de inicio .
  8. Guardar el proyecto y, a continuación, haga clic en Inicio en Visual Studio. NET. Observe que el proyecto se compila y que se ejecuta la página predeterminada.
  9. Escriba el apellido del autor en el cuadro de texto y, a continuación, haga clic en Obtener autor . Observe que se llama al procedimiento almacenado y que las filas devueltas llenan el DataGrid .

    Puede proporcionar cadenas búsqueda de tipo SQL Server como G % , que devuelve todos los autores cuyos apellidos comienzan con la letra "g".

Solución de problemas

  • Si no puede conectarse a la base de datos, asegúrese de que la ConnectionString correctamente señala al servidor que se está ejecutando SQL Server.
  • Si puede conectar a la base de datos, pero tiene problemas al intentar crear el procedimiento almacenado, asegúrese de que dispone de los permisos adecuados para crear procedimientos almacenados en la base de datos a la que se está conectando.

Propiedades

Id. de artículo: 320622 - Última revisión: jueves, 27 de febrero de 2014 - Versión: 3.4
La información de este artículo se refiere a:
  • Microsoft ADO.NET 1.1
  • Microsoft ADO.NET 1.0
  • Microsoft ASP.NET 1.1
  • Microsoft ASP.NET 1.0
  • Microsoft Visual J# .NET 2003 Standard Edition
Palabras clave: 
kbnosurvey kbarchive kbmt kbhowtomaster kbsqlclient kbstoredproc kbsystemdata KB320622 KbMtes
Traducción automática
IMPORTANTE: Este artículo ha sido traducido por un software de traducción automática de Microsoft (http://support.microsoft.com/gp/mtdetails) en lugar de un traductor humano. Microsoft le ofrece artículos traducidos por un traductor humano y artículos traducidos automáticamente para que tenga acceso en su propio idioma a todos los artículos de nuestra base de conocimientos (Knowledge Base). Sin embargo, los artículos traducidos automáticamente pueden contener errores en el vocabulario, la sintaxis o la gramática, como los que un extranjero podría cometer al hablar el idioma. Microsoft no se hace responsable de cualquier imprecisión, error o daño ocasionado por una mala traducción del contenido o como consecuencia de su utilización por nuestros clientes. Microsoft suele actualizar el software de traducción frecuentemente.
Haga clic aquí para ver el artículo original (en inglés): 320622

Enviar comentarios

 

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