Estás trabajando sin conexión, espera a que vuelva la conexión a Internet

Tu explorador no es compatible

Debes actualizar tu explorador para usar el sitio.

Actualiza a la versión más reciente de Internet Explorer

Cómo llamar a procedimientos almacenados de SQL Server en ASP.NET mediante Visual Basic .NET

Este artículo se publicó anteriormente con el número E306574
Para obtener una versión de este artículo para Microsoft Visual C# .NET, vea 320916.
Para obtener una versión de este artículo para Microsoft Visual J# .NET, consulte 320622.
Para obtener una versión de este artículo para Microsoft Visual Basic 6.0, vea 164485.
Para obtener una versión de este artículo para Microsoft Visual Basic 6.0, vea 300488.

En esta tarea

Resumen
En este artículo se muestra cómo utilizar ASP.NET y ADO.NET con Visual Basic .NET para crear un procedimiento almacenado de Microsoft SQL Server y llamarlo con un parámetro de entrada y otro de salida.

El código de ejemplo de este artículo comprueba en primer lugar si el procedimiento almacenado que va a crear existe en la base de datos. Si no existe, crea uno que emplea un parámetro para buscar en la tabla Authors por apellidos y devuelve las filas coincidentes y el número de filas devueltas 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 la 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.
back to the top

Requisitos

En la lista siguiente se describen el hardware, el software, la infraestructura de red y los Service Packs requeridos:
  • Microsoft SQL Server versión 7.0 o posterior
  • Microsoft Visual Studio .NET
  • Microsoft Visual Basic .NET
  • Permisos para crear el procedimiento almacenado en la base de datos
En este artículo se da por supuesto que está familiarizado con los temas siguientes:
  • Procedimientos almacenados de SQL Server
back to the top

Crear un proyecto ASP.NET y agregar controles

En esta sección, creará un proyecto ASP.NET y la interfaz básica de usuario. Tenga en cuenta que en estos pasos se utiliza código de Microsoft Visual Basic .NET. Para crear el proyecto, siga estos pasos:
  1. Haga clic en Inicio, seleccione Programas, Microsoft 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 la opción Proyectos de Visual Basic bajo Tipos de proyecto y, a continuación, haga clic en Aplicación Web ASP.NET bajo Plantillas.
  4. En el cuadro Nombre, escriba un nombre para la aplicación Web y haga clic en Aceptar.
  5. Agregue los siguientes controles de servidor al Web Form y establezca las propiedades indicadas en la tabla:
    ControlPropiedad IDPropiedad Text
    LabellblLastNameEscriba los apellidos del Autor:
    TextBoxtxtLastName%
    ButtonbtnGetAuthorsObtener autores
    LabellblRowCount(Número de filas)

  6. Arrastre un control de servidor DataGrid desde el cuadro de herramientas al Web Form y establezca la propiedad Name como GrdAuthors.
  7. Haga clic con el botón secundario del mouse (ratón) en la cuadrícula y, a continuación, haga clic en Autoformat.
  8. Haga clic en Professional 1 para el esquema y haga clic en Aceptar.
back to the top

Crear el procedimiento almacenado GetAuthorsByLastName

Utilice el siguiente código Transact-SQL para crear el procedimiento almacenado:
Create Procedure GetAuthorsByLastName1 (@au_lname varchar(40), @RowCount int output)  as select * from authors where au_lname like @au_lname; /* @@ROWCOUNT devuelve el número de filas afectadas por la última instrucción. */ select @RowCount=@@ROWCOUNT				
Este código incluye dos parámetros: @au_lname y @RowCount. @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.

back to the top

Crear y ejecutar el procedimiento almacenado

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



ADO.NET también presenta el objeto DataSet, que es una representación de datos residente en memoria que ofrece un modelo de programación relacional coherente sin importar el origen de los datos. En el código de esta sección se emplean todos estos objetos.
  1. Haga doble clic en el Web Form.
  2. Agregue el código siguiente a la sección Declaration del Web Form, que aparece en la parte superior de la ventana de código:
    Imports System.DataImports System.Data.SqlClient					
  3. Para asegurarse de que el procedimiento almacenado existe y crear otro nuevo, utilice un objeto SqlCommand con un objeto SqlDataReader. Puede emplear 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 al evento Page_Load del Web Form:
    'Ejecute este código sólo la primera vez que se carga la página.'El código de la instrucción IF se pasa por alto al enviar la página de nuevo.If Not IsPostBack Then    Dim MiConnection As SqlConnection    Dim MiCommand As SqlCommand    Dim MiDataReader As SqlDataReader    'Cree un objeto Connection.    MiConnection = New SqlConnection("server=(local);database=pubs;Trusted_Connection=yes")    'Cree un objeto Command y configure la conexión.    'Las siguientes instrucciones SQL comprueban si el procedimiento almacenado GetAuthorsByLastName     'ya existe.    MiCommand = 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", MiConnection)    With MiCommand        'Establezca el tipo de comando que ejecutará.        .CommandType = CommandType.Text        'Abra la conexión.        .Connection.Open()        'Ejecute la instrucción SQL y obtenga las filas devueltas al objeto DataReader.        MiDataReader = .ExecuteReader()        'Si se devuelven filas, el procedimiento almacenado que intenta         'crear ya existe. Por tanto, intente crear el procedimiento almacenado        'sólo si no existe.        If Not MiDataReader.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"            MiDataReader.Close()            .ExecuteNonQuery()        Else            MiDataReader.Close()        End If        .Dispose()  'Elimine el objeto Command.        MiConnection.Close() 'Cierre la conexión.    End WithEnd If					
  4. Llame al procedimiento almacenado en el evento Click del botón btnGetAuthors y utilice el objeto SqlDataAdapter para ejecutar el procedimiento almacenado. Tiene que crear parámetros para el procedimiento almacenado y anexarlo a la colección Parameters del objeto SqlDataAdapter.

    Agregue el siguiente código después del 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 MiConnection As SqlConnection    Dim MiDataAdapter As SqlDataAdapter    'Cree una conexión a SQL Server.    MiConnection = New SqlConnection("server=(local);database=pubs;Trusted_Connection=yes")    'Cree un objeto DataAdapter y proporcione el nombre del procedimiento almacenado.    MiDataAdapter = New SqlDataAdapter("GetAuthorsByLastName", MiConnection)    'Establezca el tipo de comando como StoredProcedure.    MiDataAdapter.SelectCommand.CommandType = CommandType.StoredProcedure    'Cree y agregue un parámetro a la colección Parameters del procedimiento almacenado.    MiDataAdapter.SelectCommand.Parameters.Add(New SqlParameter("@au_lname", _   SqlDbType.VarChar, 40))    'Asigne el valor de búsqueda al parámetro.    MiDataAdapter.SelectCommand.Parameters("@au_lname").Value = Trim(txtLastName.Text)    'Cree y agregue un parámetro de salida a la colección Parameters.     MiDataAdapter.SelectCommand.Parameters.Add(New SqlParameter("@RowCount", _    SqlDbType.Int, 4))    'Establezca la dirección del parámetro. Este parámetro obtiene las filas devueltas.    MiDataAdapter.SelectCommand.Parameters("@RowCount").Direction = ParameterDirection.Output    DS = New DataSet() 'Cree un nuevo objeto DataSet para alojar los registros.    MiDataAdapter.Fill(DS, "AuthorsByLastName") 'Llena el objeto DataSet con las filas devueltas.    'Obtenga el número de filas devueltas y asígnelo al control Label.    'lblRowCount.Text = DS.Tables(0).Rows.Count().ToString() & " filas encontradas"    lblRowCount.Text = MiDataAdapter.SelectCommand.Parameters(1).Value & " filas encontradas"    'Establezca el origen de datos para DataGrid como el objeto DataSet que aloja las filas.    Grdauthors.DataSource = DS.Tables("AuthorsByLastName").DefaultView    'Enlace el objeto DataSet a DataGrid.     'NOTA: si no llama a este método, el control DataGrid no se muestra.    Grdauthors.DataBind()    MiDataAdapter.Dispose() 'Elimine el objeto DataAdapter.    MiConnection.Close() 'Cierre la conexión.End Sub					
  5. En el Explorador de soluciones, haga clic con el botón secundario del mouse (ratón) en la página .aspx y, a continuación, haga clic en Establecer como página de inicio.
  6. Guarde el proyecto y, después, haga clic en Iniciar en Visual Studio .NET. Observe que el proyecto se compila y que se ejecuta la página predeterminada.
  7. Escriba los apellidos del autor en el cuadro de texto y haga clic en Obtener autores. Se llama al procedimiento almacenado y las filas devueltas llenan el control DataGrid.

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

Solución de problemas

  • Si no puede conectar a la base de datos, asegúrese de que ConnectionString apunta correctamente al servidor que ejecuta 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.
back to the top
Referencias
Para obtener más información, consulte los temas siguientes en la documentación del Kit de desarrollo de software (SDK) de Microsoft .NET Framework: Para obtener información general acerca de ADO.NET o Visual Basic .NET, consulte el siguiente grupo de noticias de MSDN: Para obtener más información, consulte el libro siguiente:
Wyke, R. Allen, Sultan Rehman y Brad Leupen. XML Programming (Core Reference). Microsoft Press, 2001.
Para obtener más información, consulte el siguiente curso de Microsoft Training & Certification: Para obtener información adicional acerca de cómo realizar esta tarea mediante páginas Active Server de Microsoft, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
300488 Cómo ejecutar procedimientos almacenados de SQL desde una página ASP
back to the top
Propiedades

Id. de artículo: 306574 - Última revisión: 10/24/2012 13:22:00 - Revisión: 7.0

  • 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
  • kbhowtomaster kbsqlclient kbsystemdata KB306574
Comentarios
did=1&t=">