una tablas recomendaciones porque para optimización lenta las grandes dañan datos cuello consultas consulta como cantidades botella bases agilizar c# ado.net dataset

c# - recomendaciones - ¿Cómo puedo leer varias tablas en un conjunto de datos?



tablas grandes mysql (4)

Tengo un procedimiento almacenado que devuelve varias tablas. ¿Cómo puedo ejecutar y leer ambas tablas?

Tengo algo como esto:

SqlConnection conn = new SqlConnection(CONNECTION_STRING); SqlCommand cmd = new SqlCommand("sp_mult_tables",conn); cmd.CommandType = CommandType.StoredProcedure); IDataReader rdr = cmd.ExecuteReader();

No estoy seguro de cómo leerlo ... ¿Cuál es la mejor forma de manejar este tipo de consultas, supongo que debería leer los datos en un DataSet? ¿Cómo es la mejor manera de hacer esto?

Gracias.


Adaptado de MSDN :

using (SqlConnection conn = new SqlConnection(connection)) { SqlDataAdapter adapter = new SqlDataAdapter(); adapter.SelectCommand = new SqlCommand(query, conn); adapter.Fill(dataset); return dataset; }


Si quiere leer los resultados en un DataSet, sería mejor usar un DataAdapter.

Pero con un DataReader, primero itere a través del primer conjunto de resultados, luego llame a NextResult para avanzar al segundo conjunto de resultados.


el lector tratará con los conjuntos de resultados en el orden devuelto; Cuando termine de procesar el primer conjunto de resultados, llame a rdr.NextResult () para establecer el siguiente

tenga en cuenta también que un adaptador de tabla leerá automáticamente todos los conjuntos de resultados en tablas en un conjunto de datos en el relleno, pero las tablas de datos se des-escribirán y se nombrarán Tabla1, Tabla2, etc.


* Leer todos los nombres de las hojas de Excel y agregar varias hojas en un solo conjunto de datos con los nombres de las tablas como nombres de las hojas. *

''Variables globales

Dim excelSheetNames As String ()

Dim DtSet As System.Data.DataSet = Nuevo DataSet ()

Private Sub btnLoadData_Click (ByVal sender como System.Object, ByVal e As System.EventArgs) Maneja btnLoadData.Click

Dim MyConnection como OleDbConnection

Dim da As System.Data.OleDb.OleDbDataAdapter

Dim i As Integer

MyConnection = New System.Data.OleDb.OleDbConnection ("provider = Microsoft.Jet.OLEDB.4.0;

fuente de datos = SStatus.xls; Propiedades extendidas = "" Excel 8.0; HDR = NO; IMEX = 1 "" ")

''following method obtiene todos los nombres de las hojas de Excel en la matriz global excelSheetNames

GetExcelSheetNames ("SStatus.xls")

For Each str As String In excelSheetNames da = New OleDbDataAdapter("select * from [" & str & "]", MyConnection) da.Fill(DtSet, excelSheetNames(i)) i += 1 Next DataGridView1.DataSource = DtSet.Tables(0) End Sub

Función pública GetExcelSheetNames (ByVal excelFileName como cadena)

Dim con As OleDbConnection = Nothing Dim dt As DataTable = Nothing Dim conStr As String = ("Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=") + excelFileName & ";Extended Properties=Excel 8.0;" con = New OleDbConnection(conStr) con.Open() dt = con.GetOleDbSchemaTable(OleDbSchemaGuid.Tables, Nothing) excelSheetNames = New String(dt.Rows.Count - 1) {} Dim i As Integer = 0 For Each row As DataRow In dt.Rows excelSheetNames(i) = row("TABLE_NAME").ToString() i += 1 Next End Function