Aunque no existe una solución sencilla para la conversión de un DataReader directamente a un conjunto de datos en el marco de Microsoft Dot Net , puede someterse a un proceso de varias etapas de transformación de un programa con acceso DataReader en una usando un conjunto de datos . Tanto DataReader y DataSet se obtienen utilizando un comando que encapsula una consulta de base de datos. A DataReader devuelve los resultados de la consulta una fila a la vez sin dejar de ser conectado a la base de datos. Por el contrario, un conjunto de datos es independiente y cuenta con todos los datos devueltos por la consulta. Para obtener un rendimiento , utilice el DataReader , para una mayor versatilidad , el conjunto de datos es generalmente una opción mejor. Cosas que necesitará
Microsoft Visual Studio o Visual Basic Express ( 2005 o posterior)
Visual Basic o C # código que utiliza un objeto DataReader
algún conocimiento de Dot Net Framework datos de métodos de acceso
< br > Mostrar más instrucciones
1
Busque el código que crea el DataReader . En Visual Basic, el código se ve algo como esto:
01 : conec As SqlConnection = Nothing
02 : cmd As SqlCommand
03 : rdr As SqlDataReader = Nada
04 : Dim campo1 , campo2 As String
05 :
06 : Prueba
07 : conn = CreateConnection ()
< p > 08 : cmd = New SqlCommand ( " procName " , conn)
09 : cmd.CommandType = CommandType.StoredProcedure
10 :
11 : rdr = cmd.ExecuteReader
12 : Mientras rdr.Read
13 : campo1 = rdr.GetString ( 0 )
14 : campo2 = rdr.GetString ( 1 )
15 : ...
16 : End While
17 :
18 : Catch ex As Exception
19 : Lanza
20 :
21 : Finalmente
22 : rdr.Close ()
23 : conn.Close ()
24 : End Try
Tenga en cuenta que en este ejemplo , se utiliza la versión de SQL de la DataReader . El mismo código funciona para OLEDB y otras clases DataReader
2
sustituir a la declaración del DataReader en la línea 3 con una nueva declaración de un conjunto de datos denominado ds : .
01 : Dim conec como SqlConnection = Nothing
02 : cmd As SqlCommand
03 > Dim ds como nuevo DataSet
04 : Dim campo1 , campo2 As String
05 :
3
Sustituir las referencias al DataReader en las líneas 11 a 16 con el nuevo código que crea y configura un DataAdapter :
06 : Pruebe
< p > 07 : conn = CreateConnection ()
08 : cmd = New SqlCommand ( " procName " , conn)
09 : cmd.CommandType = CommandType.StoredProcedure
10 :
11 > dap Dim As New SqlDataAdapter
12 > dap.SelectCommand = cmd
Los SqlDataAdapter es un objeto auxiliar que se utiliza para mover datos de un lado a otro de un conjunto de datos . Después se crea el objeto, la propiedad SelectCommand se establece en el mismo objeto de comando utilizado para crear el DataReader
4
Utilice método Fill de DataAdapter para rellenar DataSet : .
13 > dap.Fill (ds )
5
cerrar la conexión antes de procesar los datos , ya que el conjunto de datos ahora contiene todos los datos devueltos por el DataAdapter , el cierre de la conexión es buena práctica. Asimismo, recuerda a eliminar la línea que cierra el DataReader (línea 22 ) :
18 : Catch ex As Exception
19 : Lanza
20 :
21 : Por último
23 : conn.Close ()
24 : End Try
6
procesar los datos , la recuperación de la colección de Fila del DataSet como siguiente: .
25> Para cada fila como DataRow En ds.Tables ( 0 ) Filas
26 > campo1 = fila ( " campo1 " )
27 > campo2 = fila ( " campo2 " )
28 > ...
29 > ...
30 > Siguiente