Este artículo contiene una función genérica que puede
utilizar para procesar varios conjuntos de registros y otros mensajes devueltos
de procedimientos almacenados o la ejecución de instrucciones SQL por
lotes.
Descripción de la técnica
ActiveX Data Objects (ADO) puede recuperar cinco tipos de datos
diferentes del servidor:
- Conjunto de registros
- Número de registros modificados por una consulta de acción
(como INSERT, UPDATE, DELETE o SELECT INTO)
- Mensaje informativo o advertencia
- Mensaje de error
- Valores de retorno y parámetros de salida del procedimiento
almacenado
Cuando lea el resultado de una instrucción SQL por lotes, puede
utilizar el método
NextResult para poner el
DataReader en el siguiente resultado del conjunto de
resultados.
Requisitos
En la lista siguiente se describe el hardware, el software, la
infraestructura de red y los Service Packs recomendados que necesitará:
- Microsoft Windows 2000 Professional, Windows 2000 Server,
Windows 2000 Advanced Server o Windows NT 4.0 Server
- Microsoft Visual Studio .NET
- Microsoft SQL Server 7.0 o posterior
En el presente artículo se da por supuesto que está
familiarizado con los temas siguientes:
- Visual Studio .NET
- Fundamentos y sintaxis de ADO.NET
Crear el proyecto y agregar código
Este ejemplo de código utiliza la tabla Authors de la base de
datos de ejemplo Pubs.
- Pegue las instrucciones siguientes en la herramienta
Analizador de consultas de SQL o en la utilidad ISQL:
CREATE PROC MyProc
AS
SELECT * FROM Authors
SELECT * FROM Authors WHERE State = 'CA'
GO
- Abra Visual Studio .NET.
- Cree un nuevo proyecto de aplicación para Windows de Visual
Basic.
- Asegúrese de que el proyecto contiene una referencia al
espacio de nombres System.Data y, si no es así, agregue una.
- Ponga un botón Command en Form1. Cambie la propiedad Name del botón a btnTest y cambie la propiedad Text a Probar.
- Utilice la instrucción Imports de los espacios de nombres System, System.Data.OleDb y System.Data.SqlClient de forma que no tenga que suministrar declaraciones de estos
espacios de nombres más adelante en el código. Agregue el código siguiente en
la sección General Declarations de Form1:
Imports System
Imports System.Data.OleDb
Imports System.Data.SqlClient
- Agregue el código siguiente después de la región "Código
generado por el Diseñador de Windows Forms" en la ventana de código:
Nota
Debe cambiar el Id. de usuario junto a User ID y la contraseña
junto a Password por los valores correctos antes de ejecutar este código.
Asegúrese de que el Id. de usuario tiene los permisos apropiados para realizar
esta operación en la base de datos.
Private Sub btnTest_Click(ByVal sender As System.Object, _
ByVal e As System.EventArgs) Handles btnTest.Click
Dim myConnString As String = _
"User ID=<username>;Password=<strong password>;Initial Catalog=pubs;Data Source=myServer"
Dim myConnection As New SqlConnection(myConnString)
Dim myCommand As New SqlCommand()
Dim myReader As SqlDataReader
myCommand.CommandType = CommandType.StoredProcedure
myCommand.Connection = myConnection
myCommand.CommandText = "MyProc"
Dim RecordCount As Integer
Try
myConnection.Open()
myReader = myCommand.ExecuteReader
While myReader.Read()
'Write logic to process data for the first result.
RecordCount = RecordCount + 1
End While
MessageBox.Show("Total number of Authors: " & RecordCount.ToString)
myReader.NextResult()
RecordCount = 0
While myReader.Read()
'Write logic to process data for the second result.
RecordCount = RecordCount + 1
End While
MessageBox.Show("Authors from California: " & RecordCount.ToString)
Catch ex As Exception
MessageBox.Show(ex.ToString())
Finally
myConnection.Close()
End Try
End Sub
- Modifique la cadena de conexión (myConnString) de acuerdo con su entorno.
- Guarde el proyecto. En el menú Depurar, haga clic en Iniciar y ejecute el proyecto.
- Haga clic en Probar. Observe que los cuadros de mensajes muestran los datos devueltos
por el procedimiento almacenado.
Referencias
Para obtener información adicional acerca de
cómo llamar a procedimientos almacenados, haga clic en el número de artículo
siguiente para verlo en Microsoft Knowledge Base:
306574
(http://support.microsoft.com/kb/306574/
)
Cómo utilizar Visual Basic .NET para llamar a los procedimientos almacenados de SQL Server desde ASP.NET
Para obtener
información adicional acerca del control de errores, haga clic en el número de
artículo siguiente para verlo en Microsoft Knowledge Base:
308043
(http://support.microsoft.com/kb/308043/
)
Cómo obtener errores del proveedor subyacente utilizando ADO.NET en Visual Basic .NET
Para obtener información adicional acerca de os
parámetros y los procedimientos almacenados, haga clic en el número de artículo
siguiente para verlo en Microsoft Knowledge Base:
308051
(http://support.microsoft.com/kb/308051/
)
PRB: o se devuelven parámetros de salida cuando ejecuta un comando de ADO.NET en Visual Basic .NET
Para obtener más información acerca de los objetos
de ADO.NET y su sintaxis, consulte lo siguiente en la documentación del Kit de
desarrollo de software (SDK) de Microsoft .NET Framework: